C# 窗体助记符不起作用

C# 窗体助记符不起作用,c#,.net,winforms,visual-studio,mnemonics,C#,.net,Winforms,Visual Studio,Mnemonics,我的问题和他差不多,但他的帖子已经两年了,所以我想我可以打开一个新的 在这个程序中,我使用了标签,正如我发现的那样。所以实现了单击并输入方法。但问题是。我创建了一个测试程序。该程序由两个标签、一个按钮和一个文本框组成 第二个标签仅用于控制是否触发enter事件。当我按ALT键时,下划线显示良好,但当我按第二个键重置时,什么也没有发生。此外,如果下划线出现,我再次按下ALT键,他不会消失,按钮会完全忽略是否按下ALT键。 我转移到另一台使用VisualStudio 2013的电脑上,但得到了相同的

我的问题和他差不多,但他的帖子已经两年了,所以我想我可以打开一个新的

在这个程序中,我使用了标签,正如我发现的那样。所以实现了单击并输入方法。但问题是。我创建了一个测试程序。该程序由两个标签、一个按钮和一个文本框组成

第二个标签仅用于控制是否触发enter事件。当我按ALT键时,下划线显示良好,但当我按第二个键重置时,什么也没有发生。此外,如果下划线出现,我再次按下ALT键,他不会消失,按钮会完全忽略是否按下ALT键。 我转移到另一台使用VisualStudio 2013的电脑上,但得到了相同的结果。我下载了VisualStudio 2017,尝试创建新程序=>也不起作用

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

表格1.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);

当您在标签上使用助记符时,焦点会转到窗体上具有较高选项卡索引的下一个可选对象,而不会像tab那样环绕到下一个可选控件。由于标签在默认情况下是不可选择的,因此在重置标签后,您没有可选择的控件,因此不会发生任何事情

如果您添加另一个具有更高tab索引的可选控件(例如tab index值设置为4的文本框),则您会发现按Alt-r键将按预期转到该控件


如果要使标签可选择,则可以创建一个派生类,如下面的答案所示:-如果将nothing标签设置为SelectableLabel-则按Alt-r将导致焦点移动到该标签。

这是太多的文本。请将您的帖子缩短到绝对最小,只提供核心信息以理解和重建您的问题。好的,我会这样做。现在更好了吗?是的,现在更好了。标签被设计为作为好友控制的记忆捕捉器。由Label.process助记符实现。Primary有助于提供文本框焦点。这个标签上没有好友。考虑重写进程CMDKEY来识别击键。谢谢你的答案。我按照你和帖子的描述做了。它奏效了,但只有一次。似乎你只能按ALT+R一次。之后,我需要用鼠标单击按钮再次使用ALT+R。助记符仅适用于它所设置的控件-因此ALT-R仅会将您从重置标签移动到无标签(假设您将其设置为可选择标签)-按ALT-R后,多次按alt-r键似乎没有任何效果,因为您一直移动到已存在的空白标签。如果您按tab键到按钮,或将tab键移回重置标签,或通过单击并按Alt-r键选择控件,则您将再次移动到nothing标签。因此,即使在按Alt+r键后按Alt+B键,焦点仍在nothing标签上?对于不同类型的控件,助记符的工作方式略有不同-请参阅上面的Hans Passant评论标签助记符设计为与紧跟其后的另一个可选控件配对,因此,如果您在选项卡索引顺序的文本框旁边有一个标签,则助记符会将您移动到该控件。有了这个按钮,助记符的作用是引起一个点击事件——但是焦点不会从它当前所在的位置移动。试着把光标放在文本中间的文本框中,按下ALT-B-按钮点击事件将被触发,但是光标不会移动。好的,我可以用一个按钮来修复。文本框后。Text=无;我现在明白了,标签不是为这样的东西制作的。