当我打开新表单时,所有控件都由表单构造函数中的InitializeComponent
()初始化。这为具有最低选项卡索引的控件调用Focus()
(尝试将每个选项卡索引增加1,从1开始,但它仍然使用选项卡索引1调用控件)。我怎样才能阻止在Focus()
上调用InitializeComponent()
所以之后,当我按下键上的右数组时,它会转到最低选项卡索引而不是最低选项卡索引+ 1?
答案 0 :(得分:1)
如何在InitializeComponent()
上停止调用Focus()
你做不到。在WinForms中,焦点将始终转到启用和选择的第一个控件(根据选项卡索引)。只有在其中没有任何可选(和启用)控件时,焦点才会在Form上。
所以之后,当我在键上点击右侧数组时,它会进入最低标签索引而不是最低标签索引+ 1
你的意思并不是很清楚。您可以更改选项卡顺序,以选择在Form
打开时首先选择哪个控件。如果您想隐藏焦点,您可以做的是派生自己的自定义控件,将其放在Form
中并使用最低标签索引进行设置。它将集中在一个但用户不会看到它并且它不会互动(例如与键盘):
class DummyFocusControl : Control {
DummyFocusControl() {
SetStyle(ControlStyles.Selectable, true);
}
}
然后,您始终可以使用Focus()
或Select()
方法强制控件成为焦点(有关详细信息,请参阅MSDN,它们略有不同):
anotherControl.Focus(); // anotherControll will receive keyboard focus