Окно WinForms ComboBox DropDown и Autocomplete оба появляется

У меня есть a ComboBox на приложении winforms с этим кодом:

comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;

DataTable t = new DataTable();
t.Columns.Add("ID", typeof(int));
t.Columns.Add("Display", typeof(string));

for (int i = 1; i < 2000; i++)
{
    t.Rows.Add(i, i.ToString("N0"));
}

comboBox1.DataSource = t;
comboBox1.ValueMember = "ID";
comboBox1.DisplayMember = "Display";

Я затем выполняю эти шаги, когда окно открывается:

  1. Нажмите ComboBox кнопка раскрытия списка - это отображает список объектов и выбирает текст в ComboBox
  2. Тип '5', '1'... т.е. я надеюсь использовать автоматическое заполнение для поиска 515, 516, и т.д.
  3. Вы будете видеть, что окно автоматического заполнения теперь появляется ВДОБАВОК К выпадающему списку. Однако, если я мышь, это - затененное выпадающее окно позади окна автоматического заполнения, это получает события от нажатия мыши, включая щелчок. Таким образом, я думаю, что нажимаю на объект автоматического заполнения, но на самом деле нажимаю на что-то полностью случайное, которое я не вижу.

Это ошибка в ComboBox? Я использую Windows 7, если это имеет значение. Я настраиваю ComboBoxнеправильно так или иначе?

Обратите внимание также, что использование КЛАВИАТУРЫ использует выпадающее автоматическое заполнение. Так/клавиши со стрелкой вниз используют переднее окно, но мышь использует заднее окно.

enter image description here

30
задан DaveInCaz 27 March 2018 в 20:30
поделиться

2 ответа

Нет проблем с получением репродукции для этого, просто установив свойства из PropertyGrid. Так происходит как в Win7, так и в Windows XP.

Это нарушенное поведение задокументировано в этой статье отзывов. Как указано, Microsoft не рассматривает возможность исправления. Одно из возможных решений - отключить автозаполнение в обработчике события DropDown и снова включить его в обработчике события DropDownClosed.

20
ответ дан 28 November 2019 в 00:02
поделиться

Это устало. Ваш код мне нравится, и я несколько раз использовал эту функцию автозаполнения, и она не отображала ни DropDown, ни список автозаполнения.

Я предлагаю

  • Установить источник данных после элементов отображения / значений. Не могу вспомнить почему, но другой вызвал некоторые проблемы.

     comboBox1.ValueMember = "ID";
    comboBox1.DisplayMember = "Дисплей";
    comboBox1.DataSource = t;
    
  • Установите AutoCompleteSource в конце вашего кода (после добавления DataSouce)

Возможно, это поможет.

0
ответ дан 28 November 2019 в 00:02
поделиться
Другие вопросы по тегам:

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