2010-02-18 3 views
3

Я хотел бы иметь TextBox, который поддерживает AutoComplete и позволяет пользователям вводить несколько слов, разделенных запятой или точкой с запятой, предлагая предложения для каждого слова. У меня есть стандарт TextBox сАвтозаполнение с запятой или точкой с запятой TextBox

textBox.AutoCompleteCustomSource.AddRange(new[] { "apple", "banana", "carrot" }); 
textBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
textBox.AutoCompleteSource = AutoCompleteSource.CustomSource; 

К сожалению, это будет предлагать только для первого слова. Все, что было напечатано после этого, и оно перестает предлагать.

Я хочу, чтобы иметь возможность выполнить следующий сценарий:

  1. типа «ап»
  2. Имейте это предложить «яблоко»
  3. Нажмите запятая
  4. Имейте это заполнить «яблоко, "с курсором после запятой
  5. типа„ба“
  6. Имейте это предложить„банан“
  7. Нажмите запятая
  8. Имейте это добавить «банан», в результате «яблоко, банан,»

Я попытался погуглить для решения, но не везло. Это похоже на популярную функцию для веб-приложений, но, по-видимому, не для winforms. Какие-либо предложения?

ответ

4
+0

Ницца! Это выглядит очень многообещающе. На этот раз мне пришлось откладывать игру, но я обязательно попробую, когда у меня появится шанс. Код, кажется, имеет смысл. Благодаря! – Ecyrb

0

Вы можете реализовать свой автозаполнение, прослушивая событие KeyDown.

2

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

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

Смежные вопросы