c# - 为什么直到按下 Tab 键才显示 Focus Rectangle?

标签 c# .net vb.net winforms

我有一个奇怪的问题(可能只是为了理解)为什么在测试应用程序中直到我按下 tab 键才显示焦点矩形。

我想显示一个带有两个单选框和两个按钮的对话框。当我显示对话框时,我希望在我的第一个单选按钮周围看到一个焦点矩形。 (以便用户可以看到焦点在哪里。)我对控件进行了排序并将 tabindex 属性设置为 0 到 4,以便它们的顺序正确。 (单选框 1 的标签索引为 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

最佳答案

正如我所说,这实际上是一个用户偏好设置。

但要显示矩形,请尝试继承您自己的 RadioButton 并覆盖 ShowFocusCues 函数:

Public Class RadioWithFocus
  Inherits RadioButton

  Protected Overrides ReadOnly Property ShowFocusCues() As Boolean
    Get
      Return True
    End Get
  End Property

End Class

关于c# - 为什么直到按下 Tab 键才显示 Focus Rectangle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9226433/

相关文章:

c# - PostSharp:使用 OnMethodInvocationAspect 时删除了自定义属性

c# - 将 MySQL 日期转换为长格式日期

c# - 为什么这个字符串的长度比其中的字符数还长?

c# - 我需要重写 Equal 吗?

c# - 加载程序集时出现异常 : System. IO.FileNotFoundException : Could not load assembly 'System. ValueTuple,版本 = 4.0.2.0,

c# - 我可以在接口(interface)上重载 == 运算符吗?

c# - 为什么 Regex IsMatch() 挂起

VB.NET:新线程的匿名函数

vb.net - 尝试填充 ObjectListView 控件时出现无法转换对象错误

vb.net - 如何在没有表单边框的情况下 move 表单(visual studio)