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

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

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

最佳答案

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

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


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

关于c# - C#-将焦点传递到TabControl/页面,并且无法通过鼠标滚轮滚动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4550284/

10-12 00:28