vb.net组合框文本在向左更改

时间:2018-10-19 14:21:28

标签: vb.net combobox

我的ComboBoxes出现问题,如果我在其中输入一个值,然后跳出文本,则文本会更改为列表中第一项,并键入第一个字母。

我有:

  • 将AutoCompleteMode设置为“ SuggestAppend”
  • 将AutoCompleteSource设置为ListItems
  • DropDownStyle设置为DropDownList

我在ComboBox处于打开状态的Load事件中添加ComboBox的项目。

例如下面是来自Load事件的代码,我在其中填充了如下设置的ComboBox。

   `Me.ComboBox1.Text = ""
    Me.ComboBox1.Items.Add("a")
    Me.ComboBox1.Items.Add("aaa")
    Me.ComboBox1.Items.Add("combo")
    Me.ComboBox1.Items.Add("combobox")
    Me.ComboBox1.Items.Add("combobox test")
    Me.ComboBox1.Items.Add("common")
    Me.ComboBox1.Items.Add("common dialog")` 

运行代码后,如果我选择ComboBox1并键入common-在ComboBox1中选择了common,但是如果我离开ComboBox1,则文本将恢复为组合。

它变得有点陌生,好像我在ComboBox1_Leave事件过程中使用以下代码一样,它引发了常见的变化:

MsgBox(ComboBox1.Text)

我还尝试在ComboBox1_KeyUp事件过程中将Text的值分配给字符串,然后在ComboBox1_Leave事件过程中将其值分配给ComboBox1.Text,但这没有任何作用。

如果在将字符串值分配给ComboBox1.Text之前放置了上面的MsgBox代码,则Text值会恢复为Common,但这不是实际的解决方案。

我还注意到,如果在按Tab键之前按Enter键,它会保留正确的值,但是我也不认为这是一个特别实用的解决方案。

有人知道这里发生了什么以及如何解决吗?

1 个答案:

答案 0 :(得分:1)

将DropDownStyle设置为DropDownList是绝对必要的吗?

因为如果设置了DropDownStyle to DropDown,则在按Tab键或失去焦点时所选的值将保留。

如果绝对有必要这样做,可以尝试一下。

Public Class Form2

  Dim selectedTextForCombo As String = ""

  Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Me.ComboBox1.Text = ""
    Me.ComboBox1.Items.Add("a")
    Me.ComboBox1.Items.Add("aaa")
    Me.ComboBox1.Items.Add("combo")
    Me.ComboBox1.Items.Add("combobox")
    Me.ComboBox1.Items.Add("combobox test")
    Me.ComboBox1.Items.Add("common")
    Me.ComboBox1.Items.Add("common dialog")
  End Sub

  Private Sub ComboBox1_LostFocus(sender As Object, e As System.EventArgs) Handles ComboBox1.LostFocus
    ComboBox1.SelectedItem = selectedTextForCombo
    'This is just for a visualization of your issue
    'Label1.Text = selectedTextForCombo
  End Sub

  Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    selectedTextForCombo = ComboBox1.Text
    'This is just for a visualization of your issue
    'Label1.Text = selectedTextForCombo
  End Sub

End Class

警告:

  • 该示例适用于制表符操作。
  • 如果用户写的东西不存在,例如“ commun”, 选择的值最终将是视觉上选择的值 案例:“常见”