组合框所选项目索引不变



我用三个组合框1,2,3创建了一个简单的表单。 组合框 1 应将组合框 3 返回到索引 -1,但是在为 Combobox3 选择一个项目后,组合框 1 中的更改不会将组合框 3 更改为索引 -1,谢谢。

Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For i = 0 To 3
ComboBox1.Items.Add(i.ToString)
ComboBox2.Items.Add(i.ToString)
ComboBox3.Items.Add(i.ToString)
Next
ComboBox2.Enabled = False
ComboBox3.Enabled = False
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
ComboBox2.SelectedIndex() = -1
ComboBox3.SelectedIndex() = -1
ComboBox2.Enabled() = True
ComboBox3.Enabled() = False
End Sub
Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
ComboBox3.Enabled() = True
ComboBox3.Items.Clear()
ComboBox3.Items.Add("0")
End Sub

结束类

实际上,它确实将Selectedindex更改为-1。 如果您正确调试并实际查看了SelectedIndex,您就会发现情况确实如此。 您根据 UI 做出了假设,但这只是显示Text。 它不会清除控件的Text,即使它将SelectedIndex重置为 -1。 这有点奇怪,但事实就是如此。

您也可以清除Text,也可以执行您可能首先应该执行的操作并将DropDownStyle设置为DropDownList。 如果这样做,则控件将永远不会显示除SelectedItem之外的文本,这是您希望ComboBox在大多数情况下执行的操作。 除非您特别希望用户能够键入任意文本,否则不要将DropDownStyle设置为默认DropDown

编辑:

实际上,我刚刚尝试了这段代码,即使每个DropDownStyle都设置为DropDown,它也能正常工作:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For i = 0 To 3
ComboBox1.Items.Add(i.ToString)
ComboBox2.Items.Add(i.ToString)
ComboBox3.Items.Add(i.ToString)
Next
ComboBox2.Enabled = False
ComboBox3.Enabled = False
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
ComboBox2.SelectedIndex = -1
ComboBox2.Enabled = True
End Sub
Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged
ComboBox3.SelectedIndex = -1
ComboBox3.Enabled = (ComboBox2.SelectedIndex <> -1)
End Sub

无论如何,实际上没有任何理由在事件处理程序中引用ComboBox1ComboBox3

最新更新