我有一个奇怪的问题(可能只是为了理解)为什么在一个测试应用程序中,直到我按下Tab键才显示焦点矩形。
我想显示一个有两个单选框和两个按钮的对话框。当我显示对话框时,我想在第一个单选按钮周围看到一个焦点矩形。(这样用户就可以看到焦点在哪里。)我对控件进行了排序,并将tabindex属性设置为从0到4,这样它们的顺序就正确了。(单选框1的tabindex为0,...)
当我显示对话框的第一个单选框有焦点,但它周围没有焦点矩形。(直到我按Tab键。)
我创建了一个完全空的winforms项目(Visual Studio 2010),添加了控件并启动了它。
谁能给予我一点提示,我做错了什么?
对不起,下面是我的示例代码:
Public Class Form1
Private Sub Button1_Click(sender As System.Object, _
e As System.EventArgs) _
Handles Button1.Click
Me.Close()
End Sub
Private Sub Button2_Click(sender As System.Object, _
e As System.EventArgs) _
Handles Button2.Click
Me.Close()
End Sub
Private Sub Form1_Shown(sender As Object, _
e As System.EventArgs) _
Handles Me.Shown
RadioButton1.Focus()
RadioButton1.Select()
SendKeys.SendWait("{TAB}")
SendKeys.SendWait("+{TAB}")
End Sub
End Class
5条答案
按热度按时间x759pob21#
正如我所评论的,这实际上是一个用户首选项设置。
但要显示矩形,请尝试继承您自己的RadioButton并覆盖
ShowFocusCues
函数:oxf4rvwz2#
在窗体的初始化方法中或任何适用的地方使用继承的
Control.Focus()
。另一种方法是
Form.Activate
。此外,
ActiveControl
可能会有所帮助。avwztpqn3#
对于Win32/C++,将WM_CHANGEUISTATE消息发送到父窗口:
lo8azlld4#
马丁·康内尔:你的解决方案对我很有效!谢谢。
在C#中也是如此:
nzrxty8p5#
正如LarsTech所说,这是一个用户设置。对于Windows 7,你可以在这里找到这个设置:打开控制面板/轻松访问中心/使键盘更易于使用。
查找带有文本“给键盘快捷键和访问键加下划线”的复选框并选中它。
重新运行你的应用程序,你会看到焦点问题现在会出现在你的表单第一次加载。
尽情享受