我有一个组合框,其中有四个项目对应tabcontrol中的选项卡。当用户从组合框中选择项目时(通过左键单击并再次左键单击以选择项目),选择tabcontrol中的相应标签页。标签页设置为自动滚动,但是当以这种方式选择标签页时,鼠标滚轮滚动不起作用。 (如果我手动单击该标签页内的控件,我可以将鼠标滚动滚动..)
如果用户使用鼠标滚轮从同一个组合框中选择一个项目(并成功将控制权传递给相应的标签页),那么鼠标滚轮在该标签页上工作正常,我无法弄清楚原因。
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (comboBox1.SelectedIndex)
{
case 0:
tabControl1.SelectedTab = tabPage3;
tabPage3.Focus();
break;
}
...
}
答案 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()方法。