Вход/Регистрация
Программирование КПК и смартфонов на .NET Compact Framework
вернуться

Климов Александр Петрович

Шрифт:

Рис. 4.4. Стандартный размер выпадающего списка

Теперь нужно перейти ко второму комбинированному окну. У него размер выпадающего списка увеличился, что позволяет увидеть весь текст (рис. 4.5).

Рис. 4.5. Увеличенный размер выпадающего списка у ComboBox

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");

}

ListView

Возможно, вы замечали, что в некоторых программах используется элемент

ListView
с градиентной заливкой. Например, такое оформление интерфейса можно увидеть в списке контактов. Оказывается, совсем не сложно применить такую раскраску в своем приложении. Но для этого надо использовать стиль
LVS_GRADIENT
, как показано в листинге 4.7.

Листинг 4.7

using System.Runtime.InteropServices;

[DllImport("coredll.dll")]

static extern int SendMessage(IntPtr hwnd, uint msg, int wParam, int lParam);

const int LVS_EX_GRADIENT = 0x20000000;

const int LVM_SETEXTENDEDLISTVIEWSTYLE = 0x1000 + 54;

// Создаем градиентный фон для ListView

private void CreateGradientListView(ListView listView) {

 // Получим дескриптор ListView

 IntPtr hLV = listView.Handle;

 // Устанавливаем расширенный стиль

 SendMessage(hLV, (uint)LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_GRADIENT);

 // Обновляем вид

 listView.Refresh;

}

private void Form1_Load(object sender, EventArgs e) {

 CreateGradientListView(listView1);

  • Читать дальше
  • 1
  • ...
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: