【问题标题】:Why won't the button hotkey show up with an underline in VB?为什么按钮热键在 VB 中不带下划线显示?
【发布时间】:2020-12-23 21:34:31
【问题描述】:

我刚开始使用 Visual Studio 的 Visual Basic 自定进度课程。我分配的一个问题是创建一个带有两个按钮的表单。当表单加载时,Button1 被启用,而 Button2 被禁用。当您单击 Button1 时,Button1 被禁用,而 Button2 被启用。当您然后单击 Button2 时,Button2 被禁用,而 Button1 被启用。

我很容易做到这一点,所以我决定给自己增加一个额外的挑战。挑战是我想让禁用的按钮显示文本“禁用”,启用的按钮显示“启用”,并带有下划线的“E”作为按钮的热键。我为包含字符串“&Enabled”的启用按钮设置了一个字符串变量,以启用“E”作为热键。 “E”用作热键,但不带下划线。

我已经在网上搜索了解决此问题的方法,但我没有找到答案。我还尝试调整按钮的大小以查看按钮是否太小而无法显示下划线。那没有用。我仔细检查了我的代码,但我真的不太了解这种语言,无法理解为什么“E”没有带下划线。我正在提交我的代码并寻求帮助。我想了解为什么这不能按我预期的方式工作。

这是我使用 Visual Studio 2019 为表单编写的 VB.Net 代码。

    Public Class frmEnabledProblem
    Dim blnButton1Enabled As Boolean = True
    Dim blnButton2Enabled As Boolean = False
    Dim strButton1Enabled As String = "&Enabled"
    Dim strButton1Disabled As String = "Disabled"
    Dim strButton2Enabled As String = "&Enabled"
    Dim strButton2Disabled As String = "Disabled"
    Private Sub frmEnabledProblem_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.KeyPreview = True
        btnButton2.Text = strButton2Disabled
        btnButton2.Enabled = False
        btnButton1.Text = strButton1Enabled
        btnButton1.Enabled = True

    End Sub

    Private Sub btnButton1_Click(sender As Object, e As EventArgs) Handles btnButton1.Click
        blnButton1Enabled = False
        blnButton2Enabled = True
        btnButton1.Enabled = blnButton1Enabled
        btnButton2.Enabled = blnButton2Enabled
        btnButton1.Text = strButton1Disabled
        btnButton2.Text = strButton2Enabled
    End Sub

    Private Sub btnButton2_Click(sender As Object, e As EventArgs) Handles btnButton2.Click
        blnButton1Enabled = True
        blnButton2Enabled = False
        btnButton1.Enabled = blnButton1Enabled
        btnButton2.Enabled = blnButton2Enabled
        btnButton1.Text = strButton1Enabled
        btnButton2.Text = strButton2Disabled
    End Sub
End Class

感谢您的帮助。

【问题讨论】:

  • 这是一个 Windows 的东西,按键盘上的 ALT 键,它应该会如你所愿地显示
  • @JayV,谢谢!但是,为什么不按 ALT 键就不会显示呢?如果我使用属性查看器将热键放在按钮文本中,它将在程序运行时显示。那么,当我动态更改文本时,为什么不呢?
  • 对于第一部分 - 微软做出了改变,我不知道为什么,可能是视觉美学。对于第二部分 - 这不是我看到的行为。在程序运行时,如果不按 ALT 键,我永远看不到下划线,无论它是如何设置的(这也包括使用上面的代码)
  • @JayV,感谢您的解释。当我不尝试更改文本并且在调试模式下运行时,热键的下划线会显示在我的计算机上。无论如何,您的cmets回答了我的问题。再次感谢您,非常感谢。
  • 键盘提示在DesignMode = true 时启用in the Control class,否则ShowKeyboardCues 返回false。您可以使用自定义控件并添加protected override bool ShowKeyboardCues => true;(在VB.Net 中转换为Protected Overrides ReadOnly Property ShowKeyboardCues As Boolean = True)。这会覆盖属性以始终返回 True,因此 下划线 也会在运行时显示。在代码上的 cmets 中,也解释了那里发生了什么。

标签: vb.net button


【解决方案1】:

简而言之,因为“轻松访问/键盘”中的此设置在您的计算机上关闭

打开它并重新启动您的应用


我个人不主张特意为您的应用程序强制启用它,即使它在系统的其他地方关闭;只需在您的按钮上提供&OK 文本,并让用户根据他们自己的设置/对他们想要的 UI 的喜好来决定是否希望它显示为 OK 或 O̲K

【讨论】:

    猜你喜欢
    • 2016-04-17
    • 2010-11-19
    • 2012-04-03
    • 2021-11-26
    • 2011-08-19
    • 2010-10-24
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多