2013-01-07 36 views
0

我有三个组合框从数据库加载但未绑定,数据不同但索引相同。
所有这些都是建立这样的:同步三个组合框

ComboBox1.AutoCompleteMode = AutoCompleteMode.Suggest 
ComboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource 
ComboBox1.AutoCompleteCustomSource = mycolumn1 
ComboBox1.DropDownStyle = DropDownList 

我想获得的功能,当我选择一个组合两个其他选择项有相同索引的项目。 敌人开始我很惊讶,事件_SelectedIndexChanged从来没有触发,而我期望从那里得到索引。

这是为什么如此以及如何获得所需的功能?

回答

1

我不确定你的问题部分是因为你没有发布的代码可以帮助你解决问题。这是我为你做的一个例子。这是一个快速的,但工作;你可以在一个程序中实现这个功能,但是这样做可以让你理解它的工作原理。

Public Class Form1 

'Always give variable a default value' 
Private selectedIndex As Integer = 0 

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    Dim myArray() As String = {"1", "2", "3"} 
    ComboBox1.Items.AddRange(myArray) 
    ComboBox2.Items.AddRange(myArray) 
    ComboBox3.Items.AddRange(myArray) 
End Sub 

'Handles one of your comboboxes' 
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged 
    'Cast this as Integer for selected index and set your variable' 
    selectedIndex = CType(ComboBox1.SelectedIndex.ToString, Integer) 

    'Next lets make sure that we set the other comboboxes to this index' 
    ComboBox2.SelectedIndex = selectedIndex 
    ComboBox3.SelectedIndex = selectedIndex 
End Sub 

'Another one of your comboboxes' 
Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged 
    'Cast this as Integer for selected index and set your variable' 
    selectedIndex = CType(ComboBox2.SelectedIndex.ToString, Integer) 

    'Next lets make sure that we set the other comboboxes to this index' 
    ComboBox1.SelectedIndex = selectedIndex 
    ComboBox3.SelectedIndex = selectedIndex 
End Sub 

'Your last combobox' 
Private Sub ComboBox3_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles ComboBox3.SelectedIndexChanged 
    'Cast this as Integer for selected index and set your variable' 
    selectedIndex = CType(ComboBox3.SelectedIndex.ToString, Integer) 

    'Next lets make sure that we set the other comboboxes to this index' 
    ComboBox1.SelectedIndex = selectedIndex 
    ComboBox2.SelectedIndex = selectedIndex 
End Sub 
    End Class 

*必须全局变量添加到顶部,因此它可以用来保存当前的组合框选定的索引。您也可以忽略加载事件,因为我将其用作参考。

谢谢!

+0

谢谢MrCoDeXeR。你的代码看起来像它可能会提供所需的功能,但这仍然是一个问题,即我的组合框的_SelectedIndexChanged永远不会被触发(将breakpoiont放入处理程序中)。这可能是什么原因? –

+0

将它设置在你的sub的第一行不在里面。上面的代码将工作我知道; ) – Codexer

+0

如果解决了您的问题,请考虑将其标记为已回答,谢谢! – Codexer