C# - 将焦点传递给tabcontrol /页面,无法滚动鼠标滚轮

时间:2010-12-28 23:14:31

标签: c# forms scroll mousewheel tabpage

我有一个组合框,其中有四个项目对应tabcontrol中的选项卡。当用户从组合框中选择项目时(通过左键单击并再次左键单击以选择项目),选择tabcontrol中的相应标签页。标签页设置为自动滚动,但是当以这种方式选择标签页时,鼠标滚轮滚动不起作用。 (如果我手动单击该标签页内的控件,我可以将鼠标滚动滚动..)

如果用户使用鼠标滚轮从同一个组合框中选择一个项目(并成功将控制权传递给相应的标签页),那么鼠标滚轮在该标签页上工作正常,我无法弄清楚原因。

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

1 个答案:

答案 0 :(得分:2)

我无法得到这个问题的责备。可能有帮助的是将焦点设置为页面的第一个控件,就像通过单击控件来解决问题时所发生的情况一样。并且在组合框事件完成之后再这样做。使用此:

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

调用setFocusToPage而不是SelectedIndexChanged事件处理程序中的Focus()方法。