我和this guy或多或少有同样的问题,但他的帖子是2岁,所以我想我可以开一个新的。
在程序中我使用标签,我发现mnemonics on labels trigger the enter
event of the next control in the tab order。因此实施了click
和enter
方法。但这是问题所在。我创建了一个测试程序。该程序保留了两个标签,一个按钮和一个文本框。
第二个标签只是为了控制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);
答案 0 :(得分:2)
当您在标签上使用助记符时 - 焦点将转到具有更高选项卡索引的表单上的下一个可选对象(它不会像标签那样环绕下一个可选控件)。由于标签在默认情况下无法选择 - 因此您在重置标签后没有可选择的控件 - 因此似乎没有任何内容发生。
如果添加另一个具有更高选项卡索引的可选控件 - 比如将选项卡索引值设置为4的文本框 - 那么您会发现按Alt-r将按预期转到该控件。
如果你想让标签可以选择,那么你可以创建一个派生类,如下面的答案所示:Make label participate in control tabbing - 如果你做了什么"没有"标记一个SelectableLabel - 然后按Alt-r将使焦点移动到该标签。