Имея следующую диалоговую форму WinForms, я обрабатываю GotFocus
событие MyControl
:

MyControl
, полученное изDevExpress XtraUserControl
, который в свою очередь вытекает из стандарта Microsoft WinForms UserControl
.
Я хочу добиться того, чтобы, когда MyControl
получил фокус, когдапользователь перемещается с помощью Tab и MyControl
получает фокус, который фокусируется на дочерние элементы управления.
Я делаю это успешно с помощью следующего кода:
protected override void OnGotFocus(EventArgs e)
{
base.OnGotFocus(e);
// Forward.
foreach (Control control in Controls)
{
if (control.TabStop)
{
control.Select();
break;
}
}
}
То есть, если фокусировка Button 1
и пользователь нажимает клавишу Tab , фокус устанавливается наButton 2
.
То, что я не могу решить, - это если пользователь переместится назад.То есть, если Button 4
сфокусирован и пользователь нажимает клавиши Shift + Tab , фокус должен быть установлен на Button 3
.
Мои двавопросы:
- Есть ли способ определить порядок навигации пользователя внутри события
GotFocus
? - Правильно ли я все делаю?Может быть, есть встроенная функция / флаг, который я могу установить на
MyControl
, чтобы автоматически перенаправлять фокус на дочерние элементы управления?