Использование функции AutoComplete ComboBox, в то время как предельные значения тем, которые в списке?

17
задан JYelton 8 December 2011 в 21:45
поделиться

6 ответов

Вы могли сцепить нажатие клавиши или textchanged событие и проверить это, введенный текст был начальным соответствием подстроки для по крайней мере одного из элементов списка, отклоняя нажатие клавиши (или удаляя новый символ) если нет. Единственная проблема, о которой я могу думать с этим, - то, что это может немного сбивать с толку пользователя, что некоторый вход не принят (особенно при вводе первого символа, в которой точке список автоматического заполнения еще не будет видим, таким образом, они не будут знать то, что допустимые значения).

Или просто используют его в dropdownlist режиме - люди могут все еще ввести, и это перейдет к первому элементу списка соответствия...

2
ответ дан 30 November 2019 в 14:21
поделиться

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

0
ответ дан 30 November 2019 в 14:21
поделиться

Это может быть так просто:

Private Sub cbx_Validating(ByVal sender As Object, _
                           ByVal e As System.ComponentModel.CancelEventArgs) _
    Handles  cbxZip.Validating, cbxCity.Validating, cbxCountry.Validating

    'Prerequisites: object: combobox, style: dropdownlist, 
    'autocompletesource=listitems, autocompletemode<>none
    'check if the typed value is in the list, else cancel
    'if the value isn't found, 'findstring' will return -1
    'if cancel is set to True, one can't leave the field
    e.Cancel = sender.FindStringExact(sender.Text) < 0

    'make it obvious to the user there is an issue
    If e.Cancel Then Beep()
End Sub
3
ответ дан 30 November 2019 в 14:21
поделиться

Вы пробовали настройку AutoCompletemode = AutoCompletemode.suggestappend и AutoCompletesource = AutoCompletesource.listiteMes ? Это позволяет пользователю типа, но он принимает только слова, которые находятся в Combobox . Единственный улов - это то, что поведение изменилось для Win7 (см. Combobox.SelecatedValue не совпадает с отображенным текстом, когда DropDownStyle = DropDownlist в Windows 7 ).

Что касается тегов, вы можете попробовать «Combobox» и «.NET».

4
ответ дан 30 November 2019 в 14:21
поделиться

Я хотел сделать то же самое и наткнулся на этот вопрос. Вот что я придумал.

Создайте обработчик события KeyDown для combobox и проверьте наличие клавиши Enter. Обратите внимание, что после нажатия клавиши Enter текст в комбинированном окне выделяется (как при операции вырезания или копирования), и фокус остается в комбинированном окне.

Если был нажат Enter, вызовите функцию валидации, которая сделает все, что вы считаете нужным, если введенное значение хорошее/плохое.

Вы можете вызвать эту же функцию в обработчике события Leave, чтобы не дать пользователю покинуть combobox, пока не будет сделан правильный выбор.

private void uxWidgetsComboBox_KeyDown(object sender, KeyEventArgs e)
{
   if (e.KeyCode == Keys.Enter)
   {
      ValidateSelection();
   }
}

private void uxWidgetsComboBox_Leave(object sender, EventArgs e)
{
   if(!ValidateSelection())
   {
      uxWidgetsComboBox.Focus();
   }
}

Или что-то в этом роде, но вы поняли идею.

0
ответ дан 30 November 2019 в 14:21
поделиться

Вы можете установить для свойства «SuggestAppend» значение «SuggestAppend» и «AutoCompleteSource» значение «ListItems», которое будет отображать и добавлять введенные вами символы в раскрывающийся список. Также, если не выбран, то в раскрывающемся списке будет выбран даже соответствующий ValueMemeber.

1
ответ дан 30 November 2019 в 14:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: