【发布时间】:2025-12-12 18:40:01
【问题描述】:
我有一个可重复使用的表单。也就是说,不是每次都创建表单的新实例,而是将表单保持隐藏,并在需要时使其可见。 (我继承的设计;我认为这是性能优化。)
问题:第二次使用表单时,焦点在确定或取消按钮上,从第一次使用表单开始。
用户希望焦点以表单第一次出现时的方式启动 - 在具有最低标签索引的控件上。
如果只有一个这样的表单,我会破解它:添加一行代码硬连线到所需的控件。
但是这样的形式很多,可见性逻辑在一个通用的基类中。
因此,正确执行此操作会更有意义,并告诉表单专注于其第一个(最低 tabindex)控件。
有没有简单的方法?
(我可以遍历所有控件,但是我必须正确处理嵌套控件。由于 GUI 必须在第一次显示表单时执行此操作,我希望有一些我可以调用的方法来做到这一点对我来说。)
(在 VB.net 中编码,但 C# 答案会很好。)
【问题讨论】:
-
注意:我想出的一个解决方案是向基类添加一个自定义字段。每个子类都可以将此字段设置为打开表单时应选择的控件(或重新显示;再次可见)。 Pro:独立于标签索引,有时这很有用。 Con:独立于标签索引,这是额外的工作和维护。
-
第二种解决方案,看起来有点晦涩,是让基类区分第一次创建表单和重新使用表单。第一次,我不确定哪个事件,记住哪个控件激活了。随后的时间,SELECT(或设置 ActiveControl)记住了控件。