c# Функция автозавершения для textbox

Автозавершение при вводе данных в textbox

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

Создадим новый проект типа Windows Forms Application на языке c#.

Добавим на форму два элемента управления: Button (кнопка) и TextBox (текстовое поле).

windows form

Для реализации автоматического завершения выполним следующие действия:

1. Установим свойство MultiLine, элемента управления textBox, в значение false.

2. Создадим новый метод CreateAutoCompleteList.

private void CreateAutoCompleteList()
{
}

3. Создадим список слов для автозавершения.

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

Структура xml файла приведена на картинке.

xml файл

4. С помощью свойства AutoCompleteMode выберем режим автоподстановки:

Append — первое найденное (совпавшее) значение в коллекции AutoCompleteStringCollection.

автозавершение

Suggest — используется при возможном нахождении нескольких значений с одинаковым первым символом, например: Вася и Ваня. В таком случае пользователю будет выведен список возможных вариантов для самостоятельного выбора нужного значения.

textbox

SuggestAppend — позволяет использовать оба выше описанных режима.

Поиск совпадений в коллекции производится по первому символу слова введенного в текстовое поле.

5. С помощью свойств AutoCompleteSource и AutoCompleteCustomSource укажем источник, в котором нужно искать слова для автоматического завершения.

При работе со встроенным источником типа AutoCompleteStringCollection выбираем значение CustomSource перечисления AutoCompleteSource.

AutoCompleteSource.CustomSource;

В результате получаем:

private void CreateAutoCompleteList()
{
try
{
//загрузка xml файла
XDocument xDoc = XDocument.Load(@"../../names.xml");
//получаем все элементы name
var elmsName = xDoc.Descendants("name");
//коллекция для хранения строк для автозавершения
AutoCompleteStringCollection list;
list = new AutoCompleteStringCollection();
//заполняем коллекцию
foreach (var elmName in elmsName)
{
list.Add(elmName.Value);
}
//выбираем режим автозавершения
textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
//указываем источник данных для автоподстановки
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
textBox1.AutoCompleteCustomSource = list;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Для работы с классом XDocument необходимо добавить ссылку на пространство имён System.Xml.Linq.

using System.Xml.Linq;

Созданный метод будет выполняться во время загрузки формы, поэтому для начала подписываемся на событие Form_Load, а затем в обработчике данного события вызываем метод CreateAutoCompleteList:

private void Form1_Load(object sender, EventArgs e)
{
CreateAutoCompleteList();
}

Читайте также:

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*