Vb.net 从绑定的ToolStripComboBox填充TableAdapter
我试图根据ToolStripComboBox中的选择填充TableAdapter。 首先,我想通过将ToolStipComboBox绑定到数据源来填充它。然后,一旦它被填满,我想填充TableAdapter 这是我的代码:Vb.net 从绑定的ToolStripComboBox填充TableAdapter,vb.net,datasource,tableadapter,toolstripcombobox,Vb.net,Datasource,Tableadapter,Toolstripcombobox,我试图根据ToolStripComboBox中的选择填充TableAdapter。 首先,我想通过将ToolStipComboBox绑定到数据源来填充它。然后,一旦它被填满,我想填充TableAdapter 这是我的代码: Private Sub ToolStripComboBox_MessageType_Click(sender As Object, e As EventArgs) Handles ToolStripComboBox_MessageType.Click Me.ToolS
Private Sub ToolStripComboBox_MessageType_Click(sender As Object, e As EventArgs) Handles ToolStripComboBox_MessageType.Click
Me.ToolStripComboBox_MessageType.ComboBox.DataSource = DataSet_UToolDb.XML_MESSAGE_TYPE
Me.ToolStripComboBox_MessageType.ComboBox.DisplayMember = "MessageType"
Me.ToolStripComboBox_MessageType.ComboBox.ValueMember = "MTId"
End Sub
Private Sub ToolStripComboBox_MessageType_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ToolStripComboBox_MessageType.SelectedIndexChanged
Me.TableAdapter_XML_MESSAGE_STRUCTURE.Fill(DataSet_UToolDb.XML_MESSAGE_STRUCTURE, Me.ToolStripComboBox_MessageType.ComboBox.SelectedValue)
End Sub
由于某种原因(如果我单步执行代码),代码从设置数据源的位置跳到填充TableAdapter的位置。这会导致异常,因为TableAdapter的select查询正在根据从ToolStipComboBox中选择的值查找值。我怀疑您的代码正在跳转到TableAdapter的填充位置,因为通过设置组合框的数据源,您导致触发了
SelectedIndexChanged
事件
因此,如果ToolStripComboBox尚未填充,您需要告诉SelectedIndexChanged
处理程序返回,这可以通过在ToolStripComboBox已填充时设置布尔标志来实现。例如:
Dim m_ToolStripComboBoxPopulated As Boolean
Private Sub ToolStripComboBox_MessageType_Click(sender As Object, e As EventArgs) Handles ToolStripComboBox_MessageType.Click
Me.m_ToolStripComboBoxPopulated = False
Me.ToolStripComboBox_MessageType.ComboBox.DataSource = DataSet_UToolDb.XML_MESSAGE_TYPE
Me.ToolStripComboBox_MessageType.ComboBox.DisplayMember = "MessageType"
Me.ToolStripComboBox_MessageType.ComboBox.ValueMember = "MTId"
' Indicate ToolStripComboBox has been populated
Me.m_ToolStripComboBoxPopulated = True
End Sub
Private Sub ToolStripComboBox_MessageType_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ToolStripComboBox_MessageType.SelectedIndexChanged
If (Me.m_ToolStripComboBoxPopulated = False) Then
Return
End If
Me.TableAdapter_XML_MESSAGE_STRUCTURE.Fill(DataSet_UToolDb.XML_MESSAGE_STRUCTURE, Me.ToolStripComboBox_MessageType.ComboBox.SelectedValue)
End Sub