我现在很长时间都在努力解决这个问题。
我在标签页中有一个用户控件,其中包含:
现在问题是焦点也必须更改为tablelayout中的控件: 如果所选项目的状态为'foo',则控制'foobar'必须具有焦点,但如果所选项目的状态为'foofoo',则控制'foofoobar'必须具有焦点。
我通过使用SelectionChanged事件来处理这个问题。
如果我手动点击所选项目,这一切都正常。 最初加载控件并选择第一行时,焦点设置不正确。
我的猜测是,这与控制类的taborder setter有关,它覆盖了我的焦点,但我无法弄清楚哪个事件会触发taborder setter。
我试过了:
但没有任何作用。
欢迎任何想法。
private void ResultGridView_SelectionChanged(object sender, EventArgs e) {
SelectInput();
}
private void SetInputFocus() {
if (isValid) {
foo.Focus();
}
else {
foofoo.Focus();
}
答案 0 :(得分:2)
将焦点设置在YourTabControl_Layout事件中,就像在SelectionChanged事件中一样。
您最初也可以在任何控件上设置焦点,即使在带有Form1_Load事件的tabpage和tablelayout上也是如此。
private void Form1_Load(object sender, EventArgs e)
{
ActiveControl = SomeControl;
}
private void YourTabControl_Layout(object sender, LayoutEventArgs e)
{
if (YourTabControl.SelectedIndex == 0)
SomeControl.Focus();
}