我正在尝试根据从TableAdapter中选择的内容来填充ToolStripComboBox。首先,我希望通过将ToolStipComboBox绑定到数据源来填充它。然后,一旦它被填充,我想填充TableAdapter。
这是我的密码:
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中选择的值寻找一个值。
发布于 2013-12-18 10:11:20
我怀疑您的代码正在跳到填充TableAdapter的位置,因为通过设置ComboBox的DataSource,您将触发SelectedIndexChanged事件。
因此,您需要告诉SelectedIndexChanged处理程序在尚未填充ToolStripComboBox时返回,这可以通过在填充了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 Subhttps://stackoverflow.com/questions/20631267
复制相似问题