vb.net ComboBox Текст меняется когда левый - PullRequest
0 голосов
/ 19 октября 2018

У меня возникла проблема с моими комбинированными списками, из-за которой, если я введу его, чтобы получить значение, а затем выделю текст, то изменения первого элемента в списке с первой напечатанной буквой.

У меня есть:

  • 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 и набираю общий - в ComboBox1 выбирается общий, но если я оставляю ComboBox1, текст возвращается к комбо.

Он становится немного странным, как будто я использую код нижеПроцедура события ComboBox1_Leave, которую она выдает:

MsgBox(ComboBox1.Text)

Я также попытался присвоить значение Text строке в процедуре события ComboBox1_KeyUp, а затем назначить ее для ComboBox1.Text в процедуре события ComboBox1_Leave, но это ничего не делает.

Если я добавлю вышеупомянутый код MsgBox перед назначением значения строки для ComboBox1.Text, тогда значение Text будет возвращено в Common, но этоне практичное решение.

Я также заметил, что если я нажму Enter, прежде чем нажать на вкладку, он сохранит правильное значение, но опять же я не думаю, что это особенно практичное решение.

Кто-нибудь знает, что здесь происходит и как я могу это исправить?

1 Ответ

0 голосов
/ 19 октября 2018

Абсолютно необходимо, чтобы 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», выбранное значение в конечном итоге становится визуально выбранным значением, в данном случае: «common»
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...