и символьный режим. Поначалу библиотека .NET Compact Framework не имела поддержки режимов ввода. Поэтому для установки необходимого режима программистам приходилось использовать механизм P/Invoke для вызова функций API, как показано в листинге 9.2.

Листинг 9.2

[DllImport('coredll.dll', EntryPoint = 'SendMessage')]

private static extern uint SendMessage(IntPtr hWnd, uint msg,

 uint wParam, uint lParam);

// Сообщение для режима ввода

const uint EM_SETINPUTMODE = 0x00DE;

// Перечисление режимов ввода

public enum InputModeAPI {

 Spell = 0,

 T9 = 1,

 Numbers = 2,

 Text = 3

}

public static void SetInputMode(Control ctrl, InputModeAPI mode) {

 SendMessage(ctrl.Handle, EM_SETINPUTMODE, 0, (uint)mode);

}

private void mnuT9_Click(object sender, EventArgs e) {

 SetInputMode(textBox3, InputModeAPI.T9);

}

private void mnuSpell_Click(object sender, EventArgs e) {

 SetInputMode(textBox3, InputModeAPI.Spell);

}

private void mnuNumeric_Click(object sender, EventArgs e) {

 SetInputMode(textBox3, InputModeAPI.Numbers);

}

private void mnuText_Click(object sender, EventArgs e) {

 SetInputMode(textBox3, InputModeAPI.Text);

}

В данном примере нужный режим ввода указывается для текстового поля textBox3 с помощью системы меню (рис. 9.6).

Рис. 9.6. Выбираем режим ввода

ПРИМЕЧАНИЕ

Режим T9 в эмуляторе не работает, поэтому надо проверять код на реальном устройстве.

В библиотеке .NET Compact Framework 2.0 появилась возможность контролировать режим ввода текста с помощью класса InputModeEditor. Данный режим распространяется только на текстовые поля.

Предположим, что в программе есть два текстовых поля. В одном поле пользователь должен ввести свое имя, а во втором — номер телефона. В первом случае пользователь будет использовать буквы, а во втором случае ему необходимы только цифры. Поэтому можно заранее задать нужный режим ввода текста для разных текстовых полей. Для этого надо указать ссылку на сборку Microsoft.WindowsCE.Forms и задействовать класс InputModeEditor, как показано в листинге 9.3.

Листинг 9.3 Управление режимами ввода с помощью управляемого кода

private void Form1_Load(object sender, EventArgs e) {

 // Устанавливаем текстовый режим ввода текста

 InputModeEditor.SetInputMode(txtName, InputMode.AlphaCurrent);

 // Устанавливаем числовой режим ввода текста

 InputModeEditor.SetInputMode(txtPhone, InputMode.Numeric);

}

Переопределение клавиш Soft Key

На смартфонах клавиши Soft Key 1 и Soft Key 2 используются для управления меню. Если попробовать переопределить эти клавиши для других задач, то у вас ничего не получится. Дело в том, что события Key_Down не распознаются системой для этих клавиш, если на форме присутствует компонент MainMenu. Но если удалить этот компонент, устанавливаемый по умолчанию, то с этими кнопками можно будет связать собственные команды, как показано в листинге 9.4.

Листинг 9.4

private void Form1_KeyDown(object sender, KeyEventArgs e) {

if ((e.KeyCode == System.Windows.Forms.Keys.F1)) {

 // Soft Key 1

 lblTest.Text = 'Вы нажали на клавишу Soft Key 1';

}

if ((e.KeyCode == System.Windows.Forms.Keys.F2)) {

 // Soft Key 2

 lblTest.Text = 'Вы нажали на клавишу Soft Key 2';

}

Прокручивание формы

Если форма не умещается на экране целиком, то пользователь может прокрутить ее стилусом с помощью полос прокрутки. Особенно это полезно, если учесть, что .NET Compact Framework 2.0 теперь поддерживает свойство AutoScroll. Но смартфоны не имеют сенсорного экрана, реагирующего на стилус. Для прокрутки формы надо искать другой вариант.

Например, можно воспользоваться обработкой события KeyDown. В тестовом проекте надо растянуть форму так, чтобы нижнюю часть не было видно на экране смартфона. На форме надо разместить несколько надписей, причем одна из них должна располагаться в нижней части формы. Для свойства формы AutoScroll надо задать значение True. В листинге 9.5 приведен пример кода для прокрутки формы.

Листинг 9.5

private void Form1_KeyDown(object sender, KeyEventArgs e) {

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату