Windows.Forms助记符不起作用

时间:2017-10-30 09:41:55

标签: c# .net winforms visual-studio mnemonics

我和this guy或多或少有同样的问题,但他的帖子是2岁,所以我想我可以开一个新的。

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

test program layout

test program tab order

第二个标签只是为了控制enter事件是否被触发。当我点击ALT时,下划线显示正常,但是当我按下第二个键(对于Reset)时,没有任何反应。此外,如果出现下划线并再次按下ALT键,则他不会消失,button如果按下ALT则完全忽略。 我使用VisualStudio 2013移动到另一台PC,但得到了相同的结果。我下载了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);

1 个答案:

答案 0 :(得分:2)

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

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

如果你想让标签可以选择,那么你可以创建一个派生类,如下面的答案所示:Make label participate in control tabbing - 如果你做了什么"没有"标记一个SelectableLabel - 然后按Alt-r将使焦点移动到该标签。