* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Проверка на уровне поля
7 февраля 2009

В ряде случаев необходимо проверять данные сразу же после их ввода, что позволя-
ет осуществлять проверку полей по мере их заполнения. В этом разделе рассказано
о том, как применять события элементов управления для проверки вводимых дан-
ных, а также задавать интервалы допустимых входных значений при помощи неко-
торых свойств элемента управления TextBox.
Применение свойств элемента управления TextBox
Применение свойств элемента управления TextBox
Чаще всего для приема данных от пользователя применяется элемент управления
TextBox. Некоторые из его свойств позволяют ограничивать диапазон значений,
вводимых в текстовое поле, например:
• MaxLength
• PasswordChar
• Readonly
• Multiline
MaxLength
Свойство MaxLength ограничивает число символов, которые можно ввести в тек-
стовое поле. Если пользователь попытается ввести больше символов, чем задано
свойством MaxLength, текстовое поле не примет избыточные символы, а пользова-
тель услышит звуковой сигнал. С помощью этого свойства удобно создавать поля
для ввода значений фиксированной длины, например почтовых индексов.
PasswordChar
Свойство PasswordChar позволяет скрывать от посторонних глаз значение, вводи-
мое во время выполнения. Например, если сделать значением свойства Password-
Char звездочку (*), текстовое поле будет отображать все вводимые пользователем
символы как звездочки. Этот прием обычно используют для защиты паролей в ок-
нах входа.
Для замены пароля вы можете назначить любой допустимый символ, например
точку с запятой или знак «&». Независимо от назначенного символа, свойство Text
всегда содержит то значение, которое реально ввел пользователь.
ReadOnly
Свойство ReadOnly определяет, разрешено ли пользователю редактировать значе-
ние текстового поля. Если это свойство установлено в true, пользователю не удаст-
ся изменить отображаемый в поле текст, в противном случае значение текстового
поля можно редактировать, как обычно.
Multiline
Свойство Multiline определяет, одна или много строк в поле. Если оно установлено
в true, пользователь может вводить многострочный текст, завершая строки симво-
лом возврата каретки. Введенные строки сохраняются в виде строкового массива в
наборе Text Box. Lines. Чтобы получить нужную строку, следует указать ее индекс в
массиве.
Применение событий для проверки на уровне поля
Обработка событий, связанных с клавиатурой, на уровне поля позволяет немедлен-
но проверять любые данные, вводимые пользователем. Элементы управления, спо-
собные принимать ввод с клавиатуры, генерируют следующие три события:
• Key Down
• KeyPress
• KeyUp
События KeyDown и KeyUp
Нажатие и освобождение любой клавиши сопровождается генерацией события
KeyDown и KeyUp соответственно. Источником событий является элемент управле-
ния, обладающий фокусом ввода. Элемент управления, генерировавший событие,
передает сведения о нажатой (или отпущенной) клавише (или сочетании клавиш)
через экземпляр класса KeyEventArgs — класса, описывающего сочетание клавиш. В
сигнатуре метода, обрабатывающего событие KeyDown или KeyUp, должен быть па-
раметр типа KeyEventArgs.
Чаще всего события KeyDown и KeyUp используют, чтобы определить, нажаты ли
клавиши Alt, Ctrl или Shift. Результат передается обработчику соответствующего со-
бытия через ссылку на экземпляр класса KeyEventArgs. Его свойства Ait, Ctrl и Shift
возвращают значения типа Boolean, указывающие, были ли нажаты соответствую-
щие клавиши. Значение True свидетельствует о том, что клавиша была нажата, а
false — о том, что нет. Ниже показан пример обработчика события KeyUp, проверя-
ющего нажатие клавиши Alt:
Visual Basic .NET
Private Sub TextBox!_KeyUp(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyEventArgs) Handles TextBoxl.KeyUp
If e.Alt = True Then
MessageBox.Show("The ALT key still is down")
End If
End Sub
Visual C#
private void textBox1_KeyUp(object sender,
System.Windows.Forms.KeyEventArgs e)
{
if (e.Alt == true)
MessageBox.Show("The ALT key is still down");
}
Свойство KeyEventArgs.KeyCode позволяет определить, какая именно клавиша
спровоцировала событие. Это свойство возвращает код нажатой или отпущенной
клавиши (соответственно при событиях KeyDown или KeyUp). Ниже показан при-
мер простого обработчика события, отображающего сообщение с кодом нажатой
клавиши:
Visual Basic .NET
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As _
System.Windows.Forms.KeyEventArgs) Handles TextBoxl.KeyDown
MessageBox.Show(e. KeyCode. ToStringO)
End Sub
Visual C#
private void textBox1_KeyDown(object sender,
System.Windows.Forms.KeyEventArgs e)
MessageBox.Show(e. KeyCode.ToStringO);
Keypress
Когда пользователь нажимает клавишу, которой соответствует значение ASCII, ге-
нерируется событие KeyPress. К этим клавишам относятся все алфавитно-цифро-
вые клавиши (a— z, A— Z, 0—9), а также ряд специальных клавиш, таких, как Enter
и Backspace. Если при нажатии клавиши или их комбинации не генерируется
ASCII-символ, событие KeyPress также не генерируется. К таким клавишам отно-
сятся клавиши -модификаторы Ctrl и Alt, а также все функциональные клавиши.
Это событие очень удобно для перехвата нажатия клавиш и проверки соответ-
ствующих символов. При генерации события KeyPress обработчик получает экзем-
пляр класса KeyEventArgs, свойство Key EventArgs. Key Code которого содержит ASCII-
символ клавиши, нажатие которой спровоцировало это событие. Чтобы проверить,
например, была ли нажата цифра, достаточно проверить свойство KeyChar в обра-
ботчике события KeyPress.
Проверка вводимых символов
Тип данных Char поддерживает несколько статических [Shared (static)] методов,
удобных для проверки символов, переданных событием KeyPress:
• Char, /s Digit
• Char.IsLetter
• Char. IsLetterOrDigit
• Char. Is Punctuation
• Char, /slower
• Char.IsUpper
Все они проверяют символы и возвращают булевы значения. Что проверяет каж-
дый метод — легко догадаться по его имени. Функция Char.IsDigit возвращает true,
если переданный ей символ является цифрой, и false в любом другом случае;
Char.IsLower возвращает true, если ее аргументом является буква в нижнем регист-
ре, и false в противном случае; сходным образом работают остальные методы. Вот
пример применения метода Char.IsDigit для проверки нажатия цифр на клавиатуре:
Visual Basic .NET
Private Sub TextBox1_.KeyPress (ByVal sender as Object, ByVal e As
System. Windows. Forms. KeyPressEventArgs) Handles TextBoxl. KeyPress
If Char. IsDigit(e. KeyChar) - True Then
MessageBox.Show("You pressed a number key")
End If
End Sub
Visual C#
private void textBox1_KeyPress (object sender,
System. Windows. Forms. KeyPressEventArgs e)
{
if (Char. IsDigit(e. KeyChar) == true)
MessageBox.Show("You pressed a number key");

Теги: .NET

Статьи по теме:

Оптимизация приложений
Локализация формы
.NET Framework и языки программирования
Тестирование элемента управления
Двоичные файлы .NET
Декларативная защита по правам доступа к коду
Стыковка и фиксация элементов управления
Реализация свойств
Специальные возможности и элементы управления Windows Forms
Создание проекта установочной программы
Структуры CTS
Организация доступа к данным и работа с объектом DataReader
Строительные блоки .NET
Извлечение данных с помощью объектов DataAdapter
Пошаговое исполнение кода
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Проверка на уровне поля. Регион сайта: Москва и Санкт-Петербург