Windows.Forms 助记符不起作用

Windows.Forms Mnemonics don't work

我的问题和this guy差不多,但是他的post已经2岁了,所以我想我可以开一个新的。

在程序中我使用了标签并且我发现 mnemonics on labels trigger the enter event of the next control in the tab order。因此实现了 clickenter 方法。但这就是问题所在。我创建了一个测试程序。该程序坚持两个标签,一个按钮和一个文本框。

第二个标签只是控制是否触发 enter 事件。当我点击 ALT 时,下划线显示正常,但是当我按下第二个键(对于 Reset)时,没有任何反应。此外,如果下划线出现并且我再次按下 ALT 键,他不会消失,并且 button 完全忽略是否按下 ALT 。 我移动到另一台装有 VisualStudio 2013 的电脑,但得到了相同的结果。我下载了 VisualStudio 2017,尝试创建新程序 => 也不起作用。

英语不是我最擅长的语言,所以当我写错的时候,如果你能给我提示,我很高兴。 我希望有人能帮助我。

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void reset_Click(object sender, EventArgs e)
        {
            textBox.Text = "";
        }

        private void button_Click(object sender, EventArgs e)
        {
            textBox.Text = "Button";
        }

        private void nothing_Enter(object sender, EventArgs e)
        {
            textBox.Text = "nothing";
        }
    }
}

Form1.Designer.cs

        this.reset.Click += new System.EventHandler(this.reset_Click);
        this.button.Click += new System.EventHandler(this.button_Click);
        this.nothing.Enter += new System.EventHandler(this.nothing_Enter);

当您在标签上使用助记符时 - 焦点转到表单上具有更高选项卡索引的下一个可选对象(它不会像选项卡那样环绕到下一个可选控件)。由于标签在默认情况下是不可选择的 - 那么您在重置标签后没有可选择的控件 - 所以似乎什么都没有发生。

如果您添加另一个具有更高选项卡索引的可选控件 - 比如说一个选项卡索引值设置为 4 的文本框 - 那么您会发现按 Alt-r 将如您所愿转到该控件。

如果您想让标签可选择,那么您可以创建派生的 class,如此处的答案所示:Make label participate in control tabbing - 如果您将 "nothing" 标签设为 SelectableLabel -然后按 Alt-r 将使焦点移动到该标签。