Рис. 9.5
. Полный текст в текстовом полеПользователь может самостоятельно дописать слова песни в новом окне и выбрать команду Done
Cancel.То же самое касается и элемента ComboBox
Enter. При этом будет открыто новое окно, в котором с помощью клавиш навигации пользователь может выбрать необходимый элемент и выполнить команду меню Done.Существует также альтернативный способ выбора элемента из ComboBox
Влево или Вправо.Режимы ввода
Первые модели сотовых телефонов для отправки сообщений имели только один режима ввода. Пользователь нажимал на кнопки телефона в определенном порядке, вводя тот или иной символ. Затем появились другие режимы. В частности, сейчас поддерживается числовой режим, так называемый режим T9 и символьный режим. Поначалу библиотека .NET Compact Framework не имела поддержки режимов ввода. Поэтому для установки необходимого режима программистам приходилось использовать механизм P/Invoke для вызова функций API, как показано в листинге 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
. Выбираем режим вводаРежим T9 в эмуляторе не работает, поэтому надо проверять код на реальном устройстве.
В библиотеке .NET Compact Framework 2.0 появилась возможность контролировать режим ввода текста с помощью класса InputModeEditor
Предположим, что в программе есть два текстовых поля. В одном поле пользователь должен ввести свое имя, а во втором — номер телефона. В первом случае пользователь будет использовать буквы, а во втором случае ему необходимы только цифры. Поэтому можно заранее задать нужный режим ввода текста для разных текстовых полей. Для этого надо указать ссылку на сборку Microsoft.WindowsCE.Forms
InputModeEditor, как показано в листинге 9.3.private void Form1_Load(object sender, EventArgs e) {
// Устанавливаем текстовый режим ввода текста
InputModeEditor.SetInputMode(txtName, InputMode.AlphaCurrent);
// Устанавливаем числовой режим ввода текста
InputModeEditor.SetInputMode(txtPhone, InputMode.Numeric);
}
Переопределение клавиш Soft Key