【发布时间】:2011-01-07 13:17:13
【问题描述】:
我想为我的 Windows 窗体应用程序中的某些控件创建键盘快捷键。
例子:
注意下划线,F E V P B。
我有一个标签和一个文本框控件。我想将该 Alt 键盘快捷键关联到标签和文本框。因此,如果有人按下 Alt + B,焦点将被赋予关联的文本框。有没有办法创建这个关联?
【问题讨论】:
我想为我的 Windows 窗体应用程序中的某些控件创建键盘快捷键。
例子:
注意下划线,F E V P B。
我有一个标签和一个文本框控件。我想将该 Alt 键盘快捷键关联到标签和文本框。因此,如果有人按下 Alt + B,焦点将被赋予关联的文本框。有没有办法创建这个关联?
【问题讨论】:
当标签通过按下其加速键(使用& 设置)获得焦点时,它会将焦点转发到 Tab 键顺序中的下一个控件,因为标签不可编辑。您需要将文本框作为 Tab 键顺序中的下一个控件。
要查看和更正表单的 Tab 键顺序,请在 IDE 中使用 View + Tab Order 命令。使用 TabPages 或其他容器会为选项卡顺序添加一个嵌套级别(例如,1.1、1.2 而不仅仅是 1 和 2),但如果标签和文本框在同一个容器中,则它应该不太难正确设置。
【讨论】:
输入&File 或&Edit,你会得到下划线。这将自动将带下划线的字母与Alt 关键字绑定以作为快捷方式。
编辑。
你的问题已经修改,所以我想跟上我的回答。您想捕捉一些组合键 (Alt + F) 并将焦点设置到文本框。
您可以使用主窗体的 KeyDown 事件尝试此解决方案。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Alt && e.KeyCode == Keys.F)
{
this.textBox1.Focus();
}
}
为此,您必须另外将表单的KeyPreview 属性设置为true。
【讨论】:
Alt + F 之后,您希望显示 tabPage。我说的对吗?
this.KeyDown += new KeyEventHandler(Form1_KeyDown);
void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Alt && e.KeyCode == Keys.W)
{
btnShowConstructionCdFun();
}
}
【讨论】: