Книга: Программирование КПК и смартфонов на .NET Compact Framework
ListBox
Разделы на этой странице:
ListBox
Элемент ListBox
имеет множество возможностей, которые пока не реализованы в рамках платформы .NET Compact Framework. В частности, данный элемент не позволяет осуществлять поиск элементов по первым символам. Но для решения этой задачи можно использовать сообщение LB_FINDSTRING
.
Чтобы создать тестовое приложение, нужно добавить на форму список ListBox
и текстовое поле TextBox
. Также потребуется ввести код, приведенный в листинге 4.5.
Листинг 4.5
const int LB_FINDSTRING = 0x018F;
const int LB_FINDSTRINGEXACT = 0x01A2;
[DllImport("coredll.dll")]
static extern int SendMessage(IntPtr hwnd, int msg,
int wParam, string lParam);
private void textBox1_TextChanged(object sender, EventArgs e) {
//поиск строки по вводимым символам
listBox1.SelectedIndex =
SendMessage(listBox1.Handle, LB_FINDSTRING, -1, textBox1.Text);
}
private void Form1_Load(object sender. EventArgs e) {
listBox1.Items.Add("bank");
listBox1.Items.Add("banana");
listBox1.Items.Add("ball");
listBox1.Items.Add("bounty");
listBox1.Items.Add("bar");
}
После запуска проекта можно попробовать ввести в текстовом поле любое слово. Если в списке есть слова, начинающиеся с введенных символов, то они начнут выделяться в списке. Например, можно сначала ввести символ b, затем a
и, наконец, l
. Сначала будет выделено слово bank
, а после третьего введенного символа выделение перейдет на слово ball
.
Существует также сообщение LB_FINDSTRINGEXACT
, которое осуществляет поиск по целому слову без учета регистра. Имеет смысл применять его, когда список содержит сотни записей и отыскивание нужного слова становится утомительным занятием. Чтобы показать применение этого сообщения, нужно добавить в предыдущий пример дополнительную кнопку и ввести код, приведенный в листинге 4.6.
Листинг 4.6
private void button1_Click(object sender, EventArgs e) {
listBox1.SelectedIndex =
SendMessage(listBox1.Handle, LB_FINDSTRINGEXACT, -1, "ball");
}
- Текстовые поля
- Управление полосой прокрутки
- Многострочный текст в кнопке
- Увеличение ширины выпадающего списка ComboBox
- ListBox
- ListView
- Создание кнопки, содержащей изображение
- Список с расширенными возможностями
- Текстовое поле для ввода чисел
- Сортировка элементов ListView
- Использование элемента DateTimePicker
- Элемент Listbox
- Элемент CheckedListBox
- 4.1. Элемент управления ListBox
- Элемент ListBox
- XmlTextReader
- Листинг 5.2. Неявное изменение состояний приложения (неудачный подход)
- Элемент DateTimePicker
- А вот и продолжение
- Последний? Рывок к ББД
- Глава 4 Улучшаем элементы управления
- Преобразование документа XML в данные ADO.NET
- Листинг 5.3. Явное изменение состояния приложения (удачный подход)