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

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

Шрифт:

Многострочный текст в кнопке

По умолчанию текст для кнопок может содержать только одну строку. Но при желании можно изменить этот стиль с помощью функций

GetWindowLong
и
SetWindowLong
, как показано в листинге 4.3.

Листинг 4.3

[DllImport("coredll.dll")]

private static extern IntPtr GetCapture;

[DllImport("coredll.dll")]

private static extern int GetWindowLong(IntPtr hWnd, int nIndex);

[DllImport("coredll.dll")]

private static extern int SetWindowLong(IntPtr hWnd, int nIndex,

 int dwNewLong);

public const int GWLSTYLE = -16;

// стиль многострочного текста

public const int BS_MULTILINE = 0x2000;

private void Form1_Load(object sender, EventArgs e) {

 IntPtr hWnd;

 int style;

 this.butMultiline.Capture = true;

 hWnd = GetCapture;

 this.butMultiline.Capture = false;

 style = GetWindowLong(hWnd, GWL_STYLE);

 SetWindowLong(hWnd, GWL_STYLE, style | BS_MULTILINE);

}

В этом примере для сравнения использовались две кнопки. На каждой из них размещен достаточно длинный текст (рис. 4.2).

Рис. 4.2. Вид кнопок в процессе программирования

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

butMultiline
, а вторая кнопка остается без изменений. После запуска приложения можно заметить, что длинный текст в первой кнопке разбивается на две строки и полностью умещается в границах кнопки. Во второй кнопке слова обрезаются, и текст просто нельзя прочитать (рис. 4.3).

Рис. 4.3. Создание многострочного текста на кнопке

ВНИМАНИЕ

Данный пример был написан еще для .NET Compact Framework 1.0. В .NET Compact Framework 2.0 нет надобности вызывать функцию GetCapture для получения дескриптора hWnd, так как теперь поддерживается свойство Control.Handle.

Увеличение ширины выпадающего списка ComboBox

Выпадающий список у комбинированного окна равен ширине самого комбинированного окна

ComboBox
. Но можно обойти это ограничение с помощью неуправляемого кода, как показано в листинге 4.4.

Листинг 4.4

/// <summary>

/// Сообщение, получающее размеры выпадающего списка

/// комбинированного окна

/// </summary>

const int CB_GETDROPPEDWIDTH = 0x015f;

/// <summary>

/// Сообщение, устанавливающее размеры выпадающего списка

/// комбинированного окна

/// </summary>

const int CB_SETDROPPEDWIDTH = 0x0160;

[DllImport("coredll.dll")]

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

private void Form1_Load(object sender, EventArgs e) {

 comboBox1.Items.Add("Раз");

 comboBox1.Items.Add("Два");

 comboBox1.Items.Add("Три");

 comboBox2.Items.Add("Длинный текст");

 comboBox2.Items.Add("Очень длинный текст");

 comboBox2.Items.Add("Hy очень длинный текст");

 // Устанавливаем желаемую ширину

 SendMessage(comboBox2.Handle, CB_SETDROPPEDWIDTH, 200, 0);

 // Получим ширину выпадающего окна

 int retval = SendMessage(comboBox2.Handle, CB_GETDROPPEDWIDTH, 0, 0);

 this.Text = retval.ToString;

}

На форме надо разместить два элемента

ComboBox
. Один из них будет стандартным. А второй элемент обработает сообщение
CB_SETDROPPEDWIDTH
со значением второго параметра 200. В результате выпадающий список будет в ширину занимать 200 пикселов.

После запуска программы сначала надо обратить внимание на работу первого комбинированного окна (рис. 4.4). Оно ведет себя стандартным образом.

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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