Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 组合框调用以前的数据源_Vb.net_Winforms_Combobox_Datasource_Valuemember - Fatal编程技术网

Vb.net 组合框调用以前的数据源

Vb.net 组合框调用以前的数据源,vb.net,winforms,combobox,datasource,valuemember,Vb.net,Winforms,Combobox,Datasource,Valuemember,在这里寻找一些见解 在我的表单上,我有三个组合框控件。当最左边的接收到一个选择时,它调用一个例程来启用并填充第二个,然后在第二个中进行选择时,第三个也会发生同样的情况 Private Sub cboEquipment_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cboEquipment.SelectedIndexChanged Me.transData.isMobile

在这里寻找一些见解

在我的表单上,我有三个组合框控件。当最左边的接收到一个选择时,它调用一个例程来启用并填充第二个,然后在第二个中进行选择时,第三个也会发生同样的情况

    Private Sub cboEquipment_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cboEquipment.SelectedIndexChanged

    Me.transData.isMobile = If(Me.cboEquipment.Text = MOBIEQIP, 1, 0)

    If cboMembership.Enabled = False Then

        Me.cboMembership.Enabled = True

    End If

    Call loadGroups()

End Sub
“loadGroups”方法

    Private Sub loadGroups()

    Dim cn As New SqlConnection(My.Settings.MyConnectionString)
    Dim cm As New SqlCommand("SELECT ... ORDER BY codeHumanName ASC", cn)
    Dim ta As New SqlDataAdapter(cm)
    Dim dt As New DataTable

    Me.cboMembership.DataSource = Nothing
    Me.cboMembership.Items.Clear()

    Me.transData.membership = Nothing

    cn.Open()
    ta.Fill(dt)

    With Me.cboMembership

        .DataSource = dt
        .DisplayMember = "codeHumanName"
        .ValueMember = "codeID"

    End With

    cn.Close()

End Sub
这可以很好地工作,所有内容都应该加载,并提供适当的.ValueMember结果

我应该提到,当表单第一次加载时,框2和框3是空的,并且被禁用。在初始加载之后,我必须从列表中选择一个项来获取值(如预期的那样)

奇怪的是,一旦第二个或第三个组合框被“初始化”,它们似乎会回忆起上次的设置。例如,如果调用Reset方法,将.DataSource属性设置为Nothing,则清除列表,并将文本设置为Nothing;下次我在cboEquipment上更改SelectedIndex时,其他框将恢复使用SelectedItems和SelectedValue

根据新的DataTable,这些值并没有错,但奇怪的是,它们根本记不住(它们不应该有任何引用,并且表现为新的加载)

其他关注点;在SelectedIndexChanged事件期间调用填充方法

任何想法都很好


更新-

此行为与SelectedIndexChange事件(raise!raise!raise!)

在策略点删除和添加事件处理程序使我的代码按我希望/预期的方式工作


这篇文章是否让我走上了正确的道路…

在第二个和第三个组合框中,请在设置.DataTable之前尝试清除.Text/.SelectedText属性


组合框可能太有用了,并且假设在第二次设置.DataTable时,您希望所选项目与.Text属性匹配。

我最后使用AddHandler和RemoveHandler来防止在填充组合框时发生连锁反应。

尝试了您的建议,但问题依然存在。古怪的