Создание индекса вкладки кросс-контейнера - PullRequest
0 голосов
/ 01 марта 2011

У меня небольшая проблема, которую я не могу решить. Проблема в WinForm У меня есть несколько контейнеров (TabControls, Panels, ...).

Порядок табуляции в элементах управления работает нормально (конечно). Но теперь клиент попросил изменить taborder, чтобы перейти от текстового поля в первом контейнере (текущий tabindex 0,0,1) к элементу управления в другом контейнере (текущий tabindex 0,1,0,1).

Мой первый подход состоял в том, чтобы установить tabindex для второго на 0,0,1,1, но без эффекта. Вкладка переходит с 0,0,1 на 0,0,2.

Я тоже попробовал пару других комбинаций, но безрезультатно.

Кто-нибудь может дать мне подсказку, как я могу решить эту проблему?

PS: 0,0,0 обозначает контейнеры, которые содержат элемент управления на случай, если это неясно

Ответы [ 2 ]

3 голосов
/ 01 марта 2011

Вы можете работать с событием Leave этого элемента управления и вручную установить фокус в коде для этого.

private void textBox1_Leave(object sender, System.EventArgs e)
{
    textBox2.Focus();
}
0 голосов
/ 26 сентября 2017

Если вы хотите использовать клавишу TAB, лучше не использовать Leave event Это создаст некоторые плохие перенаправления, если вы измените с помощью мыши, например.

Лучшее переопределение ProcessCmdKey

Вот хорошее решение:

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            bool baseResult = base.ProcessCmdKey(ref msg, keyData);

            //if key is tab and TextBox1 is focused then jump to TextBox2
            if (keyData == Keys.Tab && TextBox1.Focused)
            {
                TextBox2.Focus();
                return true;
            }
            else if (keyData == Keys.Tab && TexBox2.Focused)
            {
                TextBox3.Focus();
                return true;
            }
                return baseResult;
        }

Надеюсь, это помогло.

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