首页 > 解决方案 > 组合框所选项目索引未更改

问题描述

我用三个combobox1、2、3 创建了一个简单的表单。combobox1 应该将combobox3 返回到索引-1,但是在为combobox3 选择一个项目后,combobox1 中的更改不会将combobox3 更改为索引-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

结束类

标签: vb.netindexingcombobox

解决方案


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

您可以清除Text太 或执行您可能应该首先做的事情并将 设置DropDownStyleDropDownList。如果你这样做,那么控件将永远不会显示除 之外的文本,无论如何SelectedItem,这是你ComboBox在大多数情况下想要做的。除非您特别希望用户能够输入任意文本,否则不要将DropDownStyle设置保留为 default 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

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


推荐阅读