ComboBox, который запоминает недавно введенные значения и может автоматически заполнять - PullRequest
1 голос
/ 22 января 2009

Я разрабатываю поисковую систему для настольных компьютеров в VB.NET Я использую ComboBox для указания поискового запроса (строка). Я хочу, чтобы ComboBox запоминал и отображал последние запросы. Я также хочу, чтобы ComboBox пытался автозаполнять запросы, когда пользователь печатает.

Как лучше всего это реализовать?

Ответы [ 2 ]

1 голос
/ 22 января 2009

Это, без сомнения, может быть сделано более элегантно, но вот основные принципы (извиняюсь за любые проблемы с синтаксисом, я не большой парень VB):

В событии KeyUp:

  1. Убедитесь, что клавиша не является клавишей навигации:
    if e.KeyCode <> Keys.Back [...]
    
  2. Поиск в списке предметов для набранного текста:
    idx = myCombo.FindString(myCombo.Text)
    
  3. Возьмите найденный предмет комбо:
    s = myCombo.GetItemText(idx) 
    
  4. вставить его в свойство .Text:
    myCombo.Text = s
    

Обратите внимание, что это приведет к переопределению всего введенного пользователем (уничтожение регистра). Вы можете улучшить это, добавив вместо этого пропущенную часть:

stringToAppend = s.SubString(myCombo.Text.Length)
myCombo.Text = myCombo.Text + stringToAppend

Наконец, выберите новый текст, чтобы они могли продолжать печатать:

myCombo.SelectionStart = myCombo.Text.Length - stringToAppend.Length
myCombo.SelectionLength = stringToAppend.Length
0 голосов
/ 03 апреля 2009

Возможно, вы также захотите посмотреть это с vbAccelerator.com, предлагаемой в качестве базовой отправной точки для автозаполнения в VB.NET. Код vbAccelerator обычно высокого качества.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...