Чтение онлайн

на главную - закладки

Жанры

Программирование КПК и смартфонов на .NET Compact Framework

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

Шрифт:

Элемент Button

Для создания обычной кнопки используется класс

System.Windows.Forms.Button
. Эта кнопка обладает всеми основными функциями, которые есть у такого же класса в полной версии .NET Framework. Кнопка предназначена для обработки нажатия стилуса на соответствующую область экрана. В этом случае возникает событие
Click
. Код, приведенный в листинге 3.1, является обработчиком этого события. Он выводит текущее время в текстовое поле после нажатия на кнопку с надписью
Узнать время
.

Листинг 3.1

private void butGetTime_Click(object sender, EventArgs e) {

 txtCurTime.Text = DateTime.Now.ToLongTimeString;

}

Рисунок 3.3

показывает приложение в момент нажатия на кнопку.

Рис. 3.3. Результат нажатия на кнопку

Текст на кнопке может быть только однострочным. Если он не помещается на кнопке, то будет обрезан. Поэтому нужно быть очень осторожным при выборе текста для кнопки. В следующей главе, посвященной улучшениям элементов управления, приведен пример создания кнопки с многострочным текстом, которая создается при помощи неуправляемого кода с использованием функций Windows API.

Функциональность элемента управления

Button
очень сильно урезана по сравнению с полной версией .NET Framework. В частности, у данного элемента нет свойств
Image
и
ImageList
, которые применяются для отображения на кнопке графики.

Элемент TextBox

В предыдущем примере дата отображалась в текстовом поле. Это поле создается при помощи класса

TextBox
, который позволяет вводить текст. Данный элемент поддерживает такие стандартные свойства, как
BackColor
и
ForeColor
. Событие
Click
элементом
TextBox
не поддерживается, но разработчик может воспользоваться событиями
KeyPress
,
KeyUp
и
KeyDown
. Следует отметить особенность этого элемента. Несмотря на то что класс
TextBox
поддерживает свойство
PasswordChar
, при вводе пароля на экране всегда будет использоваться символ звездочки. Задать другой символ не получится.

Также текстовое поле не поддерживает свойство

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

Листинг 3.2

private void txtCurTime_KeyPress(object sender, KeyPressEventArgs e) {

 if (Char.IsLetter(e.KeyChar)) {

// сохраняем текущую позицию каретки

int pos = txtCurTime.SelectionStart;

// переводим в верхний регистр

txtCurTime.Text =

txtCurTime.Text.Insert(txtCurTime.SelectionStart,

Char.ToUpper(e.KeyChar).ToString);

// перемещаем каретку в новую позицию

txtCurTime.SelectionStart = pos + 1;

e.Handled = true;

 }

}

ПРИМЕЧАНИЕ

У смартфонов внешний вид текстовых полей несколько отличается от стандартного вида. В частности, текстовое поле не имеет окантовки. Более подробно о текстовых полях в приложениях для смартфонов рассказывается

в соответствующей главе.

Элемент Label

В рассмотренном примере также использовался элемент

Label
для отображения текстовой строки. Как правило, надпись используется для отображения некоторого текста, который пользователь не может изменить. Сама отображаемая строка задается при помощи свойства
Text
. Текст на экране можно выравнивать с помощью свойства
TextAlign
. Разработчик может использовать значения
TopLeft
,
TopCenter
и
TopRight
. При изменении текста в метке инициируется событие
TextChanged
. При создании элемента нужно следить за длиной отображаемой строки. Если текст слишком большой и не помещается в пределах элемента, то он попросту обрезается.

В отличие от полной версии .NET Framework, элемент Label в .NET Compact Framework не поддерживает такие свойства, как

AutoSize
,
BorderStyle
,
Image
,
ImageList
и многие другие. Также не поддерживается событие
Click
. Впрочем, на практике редко возникает нужда в обработке этого события.

Элемент RadioButton

Элемент управления

RadioButton
позволяет создавать переключатели, объединенные в группы. Вся группа переключателей должна располагаться в контейнере. Примером такого контейнера может служить сама форма, но чаще используется элемент
Panel
.

Когда пользователь выбирает один переключатель, то остальные переключатели в контейнере автоматически переводятся в выключенное состояние. Приложение может иметь несколько групп элементов

RadioButton
. В любом случае группы переключателей не зависят друг от друга.

При изменении состояния переключателя в классе

RadioButton
инициируются события
Click
и
CheckedChanged
. Событие
Click
возникает, когда пользователь щелкает стилусом на самом переключателе. Событие
CheckedChanged
возникает, когда состояние элемента
RadioButton
меняется программно или в результате действий пользователя. Событие
Click
не инициируется, когда свойство
CheckedChanged
меняется программно.

Для демонстрации примера работы с элементом

RadioButton
можно создать аналог популярной телеигры «Кто хочет стать миллионером?». На экране будет отображаться вопрос, а пользователь должен выбрать из представленных вариантов единственный правильный ответ. Код, реализующий основную функциональность приложения, приведен в листинге 3.3.

Листинг 3.3

private void radClub1_CheckedChanged(object sender, EventArgs e) {

 if (this.radClub1.Checked)

MessageBox.Show("Увы, вы проиграли", "Ошибка!");

}

private void radClub2_CheckedChanged(object sender, EventArgs e) {

 if (this.radClub2.Checked)

MessageBox.Show("Поздравляю! Вы выиграли миллион!", "Миллион!");

}

private void radClub3_CheckedChanged(object sender. EventArgs e) {

 if (this.radClub3.Checked)

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

Печать мастера

Лисина Александра
6. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
фэнтези
6.00
рейтинг книги
Печать мастера

Сложный пациент

Рам Янка
5. Доктор, помогите...
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сложный пациент

Рядовой. Назад в СССР. Книга 1

Гаусс Максим
1. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Рядовой. Назад в СССР. Книга 1

Развод. Боль предательства

Верди Алиса
4. Измены
Любовные романы:
современные любовные романы
7.50
рейтинг книги
Развод. Боль предательства

На границе империй. Том 3

INDIGO
3. Фортуна дама переменчивая
Фантастика:
космическая фантастика
5.63
рейтинг книги
На границе империй. Том 3

Вперед в прошлое 6

Ратманов Денис
6. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 6

Расплата. Отбор для предателя

Лаврова Алиса
2. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Расплата. Отбор для предателя

Наследник хочет в отпуск

Тарс Элиан
5. Десять Принцев Российской Империи
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник хочет в отпуск

Лейтенант империи. Часть вторая

Четвертнов Александр
7. Внутренняя сила
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Лейтенант империи. Часть вторая

Купеческая дочь замуж не желает

Шах Ольга
Фантастика:
фэнтези
6.89
рейтинг книги
Купеческая дочь замуж не желает

Имя нам Легион. Том 6

Дорничев Дмитрий
6. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 6

Бастард Императора. Том 6

Орлов Андрей Юрьевич
6. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 6

Хозяин Теней

Петров Максим Николаевич
1. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней

Совершенный 2.0: Объединение. Часть 2

Vector
9. Совершенный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Совершенный 2.0: Объединение. Часть 2