【发布时间】:2018-05-22 10:04:16
【问题描述】:
我已经为这个问题苦苦挣扎了很长时间。
我在标签页中有一个用户控件,其中包含:
- 数据网格视图
- 带有标签、文本框和按钮控件的表格布局,这些控件是根据在 datagridview 中选择的行设置的
现在要注意的是焦点还必须更改为表格布局中的控件: 如果选中项的状态为 'foo' ,则控件 'foobar' 必须具有焦点,但如果选中的项具有状态 'foofoo' ,则控件 'foofoobar' 必须具有焦点。
我使用 SelectionChanged 事件来处理这个问题。
如果我手动单击所选项目,这一切都很好。 最初加载控件并选择第一行时,未正确设置焦点。
我的猜测是,这与覆盖我的焦点的 Control 类的 taborder setter 有关,但我无法确定是哪个事件触发了 taborder setter。
我试过了:
- 覆盖 OnLoad 和 OnLayout 并调用与 SelectionChanged 事件中调用的代码相同的代码
- 覆盖 OnLoad 和 OnLayout 并首先设置第 2 行,然后设置第 1 行以触发 SelectionChanged 事件
但没有任何效果。
欢迎提出任何想法。
private void ResultGridView_SelectionChanged(object sender, EventArgs e) {
SelectInput();
}
private void SetInputFocus() {
if (isValid) {
foo.Focus();
}
else {
foofoo.Focus();
}
【问题讨论】:
标签: c# winforms user-controls