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



Работа с фокусом ввода
7 февраля 2009

Объект, обладающий фокусом, способен получать пользовательский ввод, осуще-
ствляемый мышью или через клавиатуру. На форме может быть несколько элемен-
тов управления, но в каждый момент времени фокус ввода только у одного из них.
Элемент управления, обладающий фокусом, всегда находится на активной форме
приложения.
У каждого элемента управления есть метод Focus, который передает фокус ввода
вызвавшему его элементу управления. Метод Focus возвращает булево значение,
свидетельствующее об успешной или неудачной передаче фокуса. Деактивлрован-
ные или невидимые элементы управления не получают фокус ввода. Определить,
способен ли данный элемент управления получить фокус ввода, позволяет его свой-
ство CanFocus: если оно возвращает true, элемент управления может получить фо-
кус, а если false — нет.
Visual Basic .NET
Проверить, может ли TextBoxf получить фокус,
и, если да, передать ему фокус.
If TextBoxl.CanFocus = True Then
TextBoxl.Focus()
End If
Visual C#
// Проверить, может ли TextBoxl получить фокус,
// и, если да, передать ему фокус.
if (textBoxl.CanFocus == true)
textBoxl.Focus();
События, связанные с передачей фокуса, генерируются в следующем порядке:
1. Enter
1. Got Focus
3. Leave
4. Validating
5. Validated
6. LostFocus
События Enters Leave генерируются, когда фокус переходит к элементу управ-
ления (но еще не получен им) и покидает его. События GotFocus и LostFocus генери-
руются при получении и потере фокуса элементом управления. В принципе, эти
события можно применять для проверки вводимых значений на уровне поля, одна-
ко события Validating и Validated лучше подходят для этой цели.
События Validating и Validated
Проще всего проверить вводимые данные при помощи события Validating, генери-
руемого перед потерей фокуса элементом управления. Это событие генерируется,
только если у элемента управления, который получит фокус следующим, свойство
Causes Validation установлено в true. Поэтому, если значение элемента управления
предполагается проверять при помощи события Validating, для элемента управле-
ния, который получит фокус следующим, свойство CausesValidation следует устано-
вить в true. Кроме того, использование события Validating требует, чтобы свойство
CausesValidation у проверяемого элемента управления было установлено в true. У
всех элементов управления, созданных во время разработки, свойство CausesValidation
установлено в trite по умолчанию, обычно исключение составляет лишь кноп-
ка Help.
Событие Validating позволяет выполнять довольно сложную проверку значений
элементов управления. Обработчик этого события способен, например, проверять
соответствие введенного значения некоторому весьма специфическому формату или
запрещать передачу фокуса другому элементу управления, пока пользователь не
введет какое-либо значение.
Событие Validating включает экземпляр CancelEventArgs — класса с единствен-
ным свойством Cancel. Если введенное значение не отвечает заданным параметрам,
проверив свойство Cancel в обработчике события Validating, можно отменить даль-
нейшую обработку этого события и вернуть фокус исходному элементу управления.
Событие Validated генерируется после успешной проверки значения элемента
управления и позволяет выполнить некоторые действия в зависимости от результа-
тов проверки.
Ниже показан пример обработчика события Validating, который не разрешает пе-
редать фокус следующему элементу управления, пока пользователь не введет зна-
чение в поле TextBoxl.
Visual Basic .NET
Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As
System. ComponentModel. CancelEventArgs) Handles TextBoxl. Validating
1 Проверить значение TextBoxl
If TextBoxl. Text = "" Then
Если поле TextBoxl пусто, вернуть ему фокус
e. Cancel - True
End If
End Sub
Visual C#
private void textBox1_Validating(object sender,
System. ComponentModel. CancelEventArgs e)
{
// Проверить значение TextBoxl
if (textBoxt.Text == "")
// Если поле TextBoxl пусто, зернуть ему фокус
e. Cancel = true;
> Применение события Validating для проверки текстового поля
1. Поместите на форму текстовое поле.
2. Создайте для него обработчик события Validating, устанавливающий свойство
e. Cancel в true, чтобы прервать проверку и вернуть фокус текстовому полю.
3. Для всех элементов управления, которые не должны генерировать событие
Validating, установите свойство Causes Validation в false.

Теги: .NET

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

Развертывание проекта
Декларативная защита, основанная на ролях
Towards Cleaner Code, A C# Asynchronous Helper
Двоичные файлы .NET
Создание дополнительных типов объектов Doughnut
Редактор нестандартных действий
Cabinet File (*.CAB) Compression and Extraction – версия 9.9
Окна Locals, Autos и Watch
Типы и пространства имен .NET
Компиляция и исполнение .NET-приложений
Реализация метода RemoveStale
Конструкторы и деструкторы
Создание абстрактных членов
Делегаты
Объект DataRelation
| .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 | Работа с фокусом ввода. Регион сайта: Москва и Санкт-Петербург