C # - Передача фокуса на tabcontrol / page и невозможность прокрутки колесиком мыши - PullRequest
3 голосов
/ 29 декабря 2010

У меня есть выпадающий список с четырьмя элементами, которые соответствуют вкладкам в tabcontrol.Когда пользователь выбирает элемент из выпадающего списка (щелкая левой кнопкой мыши и снова щелкая левой кнопкой мыши, чтобы выбрать элемент), выбирается соответствующая вкладка в элементе управления вкладками.На вкладке установлена ​​автопрокрутка, но при выборе этой вкладки прокрутка колесиком мыши не работает.(Если я щелкну элемент управления внутри этой вкладки вручную, я смогу затем прокрутить колесико мыши.)

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

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    switch (comboBox1.SelectedIndex)
    {
        case 0:
            tabControl1.SelectedTab = tabPage3;
            tabPage3.Focus();
            break;
    }
    ...
}

1 Ответ

2 голосов
/ 29 декабря 2010

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

    private void setFocusToPage(TabPage page) {
        var ctl = page.Controls.Count > 0 ? page.Controls[0] : page;
        this.BeginInvoke((MethodInvoker)delegate { ctl.Focus(); });
    }

Вызовите setFocusToPage вместо метода Focus () в вашем обработчике событий SelectedIndexChanged.

...