Элемент управления, который получает табуляцию дважды - PullRequest
0 голосов
/ 03 июня 2009

В стандартном приложении WinForms возможно ли иметь сценарий, подобный следующему, и как бы я это сделал:

Форма с четырьмя элементами управления текстовым полем, расположенными в форме сверху вниз:

  • TextBox1
  • TextBox2
  • TextBox3
  • TextBox4

Желаемое поведение заключается в том, что при загрузке формы фокус находится на TextBox3, но при выводе вкладок фокус переходит наверх и проходит все элементы управления в обычном порядке следующим образом:

  1. TextBox3
  2. TextBox1
  3. TextBox2
  4. TextBox3
  5. TextBox4

Ответы [ 5 ]

1 голос
/ 03 июня 2009

ЛФСР прав:

Вы должны кодировать событие textBox3 LostFocus, это пример VB

static notFirstTime as boolean
if notFirstTime then exit sub
textbox1.setFocus
notfirstTime=true
1 голос
/ 03 июня 2009

Это будет то, что вам нужно будет кодировать, и это потребует правильного использования событий. Настройте порядок табуляции так, как вы хотите, а затем введите следующее:

private bool OnLoad = True;

Form_OnLoad(...) {
    TextBox3.SetFocus();
}

TextBox3_LostFocus(...) {
    if (OnLoad) {
        TextBox1.SetFocus();
        OnLoad = false;
    } // The else falls through to the default tab order
 }
0 голосов
/ 03 июня 2009

В вашем конструкторе (или дизайнере) Установите индексы таблиц вот так (или что-то вроде этого).

this.textBox1.TabIndex = 1;
this.textBox2.TabIndex = 2;
this.textBox3.TabIndex = 0;
this.textBox4.TabIndex = 4;

Затем установите событие, чтобы установить tabIndex текстового поля 3 на новое значение:

private void textBox3_Leave(object sender, EventArgs e)
{
    textBox3.TabIndex = 3;
}
0 голосов
/ 03 июня 2009

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

  • Метка для текстового поля 3 = 1
  • TextBox1 = 2
  • TextBox2 = 3
  • TextBox3 = 4
  • TextBox4 = 5

Вам нужно установить метку так, чтобы TabStop = "True". Но я думаю, что это МОЖЕТ работать. Пожалуйста, имейте в виду, что я не уверен на 100% в этом ...

0 голосов
/ 03 июня 2009

Краткий ответ: абсолютно!

Макет на форме не имеет ничего общего с порядком табуляции. Вы задаете обход вкладок - и отправную точку - просто устанавливая свойство TabIndex. Начальный элемент управления должен получить 0, следующий - 1 и т. Д. Также свойство TabStop удобно для указания того, какие элементы управления должны быть доступны с помощью клавиши Tab.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...