无论何时打开表单,系统都会自动为您控制其中一个控件.据我所知,获得焦点的控件是Tab键顺序中的第一个启用控件,根据
Windows标准行为.
问题是如何在运行时更改此功能,而无需动态重新调整Tab键顺序.例如,某些表单可能希望根据程序逻辑改变最初聚焦的控件,以便将焦点放在最合适的控件中.如果您只是将其他控件集中在OnLoad处理程序中,则默认逻辑仍会执行并重新聚焦默认控件.
如果您使用C/C++编写并使用原始窗口过程或MFC,则可以从WM_INITDIALOG处理程序返回0(FALSE),并跳过默认的聚焦逻辑.但是,我在Windows Forms找不到任何方法.我想出的最好的方法是在OnLoad完成后使用BeginInvoke设置焦点,如下所示:
protected override void OnLoad( System.EventArgs e ) { base.OnLoad( e ); // ... code ... BeginInvoke( new MethodInvoker( () => this.someControl.Focus() ) ); }
必须有一些正确的方法来做到这一点 – 它是什么?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。