Автозаполнение [содержит вместо начала с] в winform TextBox
// [in designer] textBoxInContext.AutoCompleteMode = Suggest
// [in designer] textBoxInContext.AutoCompleteSource = CustomSource
AutoCompleteStringCollection autoComplete = new AutoCompleteStringCollection();
autoComplete.AddRange(myArrayofStrings);
textBoxInContext.AutoCompleteCustomSource = autoComplete;
У меня есть этот код, который хорошо работает, как описано в MSDN.
Проблема: если пользователь вводит "PS" , он показывает всю строку, начинающуюся с "PS" ; Я хотел бы отобразить все строки, содержащие "PS"
Любые указатели?
Ответы
Ответ 1
Если вы не нашли другого способа, я предлагаю сделать это вручную:
- Используйте поле со списком без элементов (вы заполните их вручную позже).
- Введите строковый массив с вашими возможными предложениями.
- В событии
combobox.TextChanged
или KeyUp
возьмите его текст и сравните его с вашим строковым массивом в зависимости от того, какой вы хотите, и после очистки combobox.Items
добавьте найденные результаты в combobox.Items
и убедитесь, что установлены свойство DroppedDown
- true, если вы нашли предложения.
Ответ 2
Глупое, но интересное предложение: создайте класс, наследующий от AutoCompleteStringCollection, и поиграйте с ним в отладке, чтобы узнать, можете ли вы это сделать.
Обычное предложение: сделайте свой собственный автозаполненный со списком.
Ответ 3
Я столкнулся с той же проблемой, и WPF Autocomplete Textbox Control - это то, что я нашел в CodeProject, это работает очень хорошо. Он написан в WPF, но вы можете изменить его в соответствии с вашими потребностями.