Элемент управления ListView
в .NET Compact Framework не поддерживает метод Sort
, который позволил бы отсортировать элементы списка. В документации MSDN есть статья «How to: Sort ListView Items», в которой рассказывается о том, как решить эту проблему при помощи метода Sort
класса ArrayList
и интерфейса IComparer
.
Использование элемента DateTimePicker
Элемент управления DateTimePicker
появился только в последней версии .NET Compact Framework 2.0. В документации MSDN есть ряд замечательных статей о том, как создать собственный элемент DateTimePicker
для программ, работающих на платформе .NET Compact Framework 1.0. Стоит ознакомиться со статьями «Adding Designer Support to the .NET Compact Framework DateTimePicker Control» и «Microsoft .NET Compact Framework-based DateTimePicker Control».
Глава 5
Мышь и клавиатура
Мышь и стилус
Взаимодействие с программой пользователь осуществляет с помощью стилуса или аппаратных кнопок на самом устройстве. А где же мышь и клавиатура? Ну, предположим, что клавиатуру можно заменить ее виртуальным аналогом на экране КПК. Она имеет практически ту же функциональность, что и настоящая клавиатура. Кроме того, следует помнить, что существуют КПК с настоящей, хоть и маленькой, клавиатурой. Что же касается мыши, то ее роль с успехом выполняет стилус.
Но стоит заметить, что у стилуса нет возможности эмулировать нажатие правой кнопки мыши. Когда пользователь применяет стилус, то генерируются события MouseDown
, MouseMove
, MouseUp
и Click
. Первые три события могут сообщить о позиции курсора, как и события из настольной версии Windows.
Курсоры
Так как пользователь при работе использует стилус, то Windows Mobile не отображает на экране устройства стандартную стрелку курсора. Предполагается, что пользователь может самостоятельно попасть острым концом стилуса в маленькую кнопку или другой элемент. Но у мобильных систем курсоры все же есть. Первый из них является аналогом песочных часов в настольной версии Windows и выглядит как анимированный круг с разноцветными секторами. Второй курсор можно увидеть при вызове контекстного меню. Он выглядит как множество маленьких красных кружков, которые постепенно появляются вдоль воображаемой окружности.
Песочные часы
При выполнении длительных ресурсоемких операций нужно показать пользователю, что устройство работает, а не зависло. Лучше всего вывести на экран устройства курсор ожидания. В карманных компьютерах в качестве такого курсора используются не песочные часы, как в настольных компьютерах, а анимированный разноцветный круг, Установить данный тип курсора в приложении очень просто, что иллюстрирует фрагмент кода, приведенный в листинге 5.1.
// Устанавливаем курсор ожидания
Cursor.Current = Cursors.WaitCursor;
// возвращаем курсор по умолчанию
Cursor.Current = Cursors.Default;
На рис. 5.1 показано приложение с соответствующим курсором.
Рис. 5.1. Отображение курсора ожидания
Обработка события Tap-and-Hold
Так как в карманных компьютерах не используется правая кнопка мыши, то для вызова контекстного меню используется операция Tap-and-Hold. Пользователь касается стилусом экрана и некоторое время удерживает нажатие. Если элемент, на поверхности которого находится стилус, связан с элементом ContexMenu
, то на экране появится контекстное меню. А что делать, если мы хотим создать собственный обработчик события Tap-and-Hold? В этом случае надо добавить в проект таймер и написать код для обработки событий Mouse_Down
, Mouse_Up
и timer1_Tick
. Для таймера следует задать интервал, необходимый для инициирования события. Сам код приведен в листинге 5.2.
private void Form1_MouseDown(object sender, MouseEventArgs e) {
// включаем таймер
timer1.Enabled = true;
}
private void Form1_MouseUp(object sender, MouseEventArgs e) {
timer1.Enabled = false;
label1.Text = '';
}
private void timer1_Tick(object sender, EventArgs e) {
label1.Text = 'Вы нажали на экран';
}
Клавиатура
На большинстве карманных компьютеров нет стандартной клавиатуры, поэтому ввод текста