我是.NET编程的初学者。尝试使用组合框进行编码。我有两个组合框。两个组合框中的项目是相同的。城市名称。我正在寻找的是,当用户在第一个组合框中选择一个城市时,同一个城市不应该在第二个组合框中可见。我试过'删除'和'删除'但问题是,我不想更改集合中的项目的集合或索引。除此之外,如果用户稍后选择另一个城市,则第一个城市应该再次出现在列表中,而后一个城市应该消失。 请帮帮我..提前谢谢。
答案 0 :(得分:1)
刚看到你的问题,答案就会很长,因为如果没有删除它,就无法简单地让用户看到单个项目。但我可以为你的问题提出不同的解决方案。
我将采取以下假设:
所以,我会尽可能简洁地尝试这样做。
第一步:制作两个类型为'String Collection'的新设置,并将城市列表添加到两个
第二步:在类的顶部创建两个新的字符串变量(您希望它们可以访问表单上的所有控件)
Private Sub ComboBox1_Leave(sender as Object, e as EventArgs) Handles ComboBox1.Leave
If ComboBox1.SelectedIndex = -1 Then
myStringOne = vbNullString ' Nothing is chosen
Else
myStringOne = ComboBox1.SelectedItem.ToString 'One of the two variables as described in the second step
End If
If Not myStringOne = vbNullString Then
ComboBox2.Items.Remove(myStringOne) ' Remove it just for now
End If
End Sub
Private Sub ComboBox1_Enter(sender as Object, e as EventArgs) Handles ComboBox1.Enter
If myStringTwo = vbNullString Then
ComboBox1.Clear ' Clear list
For Each city in My.Settings.CitiesListOne
ComboBox1.Items.Add(city)
Next
Else 'User selected a city in ComboBox2
ComboBox1.Remove(myStringTwo)
End If
End Sub
Private Sub ComboBox2_Leave(sender as Object, e as EventArgs) Handles ComboBox1.Leave
If ComboBox2.SelectedIndex = -1 Then ' Nothing is chosen
myStringOne = vbNullString
Else
myStringTwo = ComboBox2.SelectedItem.ToString 'One of the two variables as described in the second step
If Not myStringTwo = vbNullString Then
ComboBox1.Items.Remove(myStringTwo) ' Remove it just for now
End If
End Sub
Private Sub ComboBox2_Enter(sender as Object, e as EventArgs) Handles ComboBox1.Enter
If myStringOne = vbNullString Then
ComboBox2.Clear ' Clear list
For Each city in My.Settings.CitiesListTwo
ComboBox2.Items.Add(city)
Next
Else 'User selected a city in ComboBox1
ComboBox2.Remove(myStringOne)
End If
End Sub
正如你所说,你是VB.NET的新手,我尽量不做任何太复杂的事情,你无法自己调试。有更简洁有效的方法来做你想要的,但没有看到你的代码,只是觉得保持简单。如果您有任何其他问题,请与我们联系。
答案 1 :(得分:0)
您可以在Enabled
事件中将SelectedIndexChanged
条件设置为False。
Private Sub ComboBox1_SelectedIndexChanged(sender as Object, e as EventArgs) Handles ComboBox1_SelectedIndexChanged
Dim x as integer
x = ComboBox1.SelectedValue
For i as integer = 1 to ComboBox2.Items.Count -1
ComboBox2.Items(i).Enabled = True
Next
ComboBox2.Items(x).Enabled = False
End Sub
您需要启用autopostback
功能。
希望这有帮助。