3

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

如果用户鼠标滚轮从同一个组合框中选择一个项目(并成功地将控制权传递给相应的标签页)鼠标滚轮滚动在该标签页上工作正常,我不知道为什么。

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

1 回答 1

2

我无法重现这个问题。可能有帮助的是将焦点设置到页面的第一个控件,就像通过单击控件解决问题时发生的情况一样。稍后,在组合框事件完成后执行此操作。用这个:

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

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

于 2010-12-29T03:54:54.293 回答