我有一个重复使用的表单。也就是说,不是每次都创建表单的新实例,而是保持表单隐藏,并在需要时使表单可见。 (我继承的设计;我认为这是性能优化。)
问题:第二次使用表单时,从第一次使用表单开始,重点是“确定”或“取消”按钮。
用户希望焦点以第一次显示表单时的方式开始 - 在具有最低标签索引的控件上。
如果只有一个这样的表单,我会破解它:添加一行硬连线到所需的控件。
但是有很多这样的形式,可见性逻辑在一个共同的基类中。
所以这样做会更有意义,并告诉表单专注于它的第一个(最低tabindex)控件。
有一种简单的方法吗?
(我可以遍历所有控件,但是我必须正确处理嵌套控件。由于GUI必须在第一次显示表单时执行此操作,我希望有一些方法我可以调用它来做对我来说。)
(在VB.net中编码,但C#答案没问题。)
答案 0 :(得分:2)
这是一个单行,找到下一个控件的逻辑作为方法SelectNextControl()公开。您应该从Form对象开始,该对象永远不会得到焦点,并要求它在Tab键顺序中找到下一个。哪个是具有最低TabIndex的孩子,无论它有什么价值。
这样的事情:
public void ShowAgain() {
this.Show();
this.SelectNextControl(this, true, true, true, true);
}
并且做认为不可见的Form对象是一个相当重要的资源占用,为了方便起见,占用了大量的操作系统资源。当然,你也可以关闭/处理它,并在需要时重新创建它。 YMMV。
答案 1 :(得分:1)