Как я могу сфокусироваться на текстовом поле после выбора вкладки? - PullRequest
3 голосов
/ 07 февраля 2010

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

    private void tabBDERip_Click(object sender, EventArgs e)
    {
        textBoxPassword.Focus();
    }

и

    private void tabAll_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (tabAll.SelectedTab == tabBDERip)
        {
            textBoxPassword.Focus();
        }
    }

Может кто-нибудь сказать мне, что я делаю не так?

Спасибо

1 Ответ

6 голосов
/ 07 февраля 2010

Во-первых, событие Click элемента управления TabPage срабатывает, когда пользователь нажимает внутри TabPage не в заголовке, поэтому ваше событие SelectedIndexChanged - это то, которое вы хотите использовать.

Я только что протестировал код, очень похожий на ваш:

private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (tabControl1.SelectedTab == tabPage2)
    {
        textBox4.Focus();
    }
}

И все работало нормально.

Текстовое поле пароля не включено или что-то в этом роде?

Если вы попытаетесь вызвать Focus() на другом элементе управления, это тоже не сработает?

Если вы установите точку останова в коде SelectedIndexChanged, она попадет?

Обновление: Интересно. Если точка останова не была достигнута (до if), я бы дважды проверил, правильно ли подключен ваш обработчик событий. Поищите в файле designer.cs что-то вроде:

this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged);

Обновление: Я поместил свой рабочий пример на http://www.ccswe.com/temp/SO_TextBoxFocus.zip, возможно, просмотр его поможет вам выяснить, в чем проблема.

Обновление: Более простой способ присоединить обработчик событий к элементу управления в вашей форме:

1: выберите Control, к которому нужно прикрепить обработчик событий, и щелкните значок Events (молния) в окне Properties.

альтернативный текст http://www.ccswe.com/temp/Attach_EventHandler_1.png

2: найдите событие, которое вы хотите прикрепить, и дважды щелкните вправо.

альтернативный текст http://www.ccswe.com/temp/Attach_EventHandler_2.png

3: для вас будет автоматически сгенерирована заглушка кода, а событие будет прикреплено в конструкторе.

альтернативный текст http://www.ccswe.com/temp/Attach_EventHandler_3.png

Если вы снова посмотрите в окно свойств, то увидите имя сгенерированного метода.

...