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。因此实现了 click
和 enter
方法。但这就是问题所在。我创建了一个测试程序。该程序坚持两个标签,一个按钮和一个文本框。
第二个标签只是控制是否触发 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 将使焦点移动到该标签。
我的问题和this guy差不多,但是他的post已经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 的电脑,但得到了相同的结果。我下载了 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 将使焦点移动到该标签。