C# 如何为Windows窗体中的文本框指定快捷键(如Ctrl+;F)?
我正在使用C#构建一个工具。这是一个Windows应用程序。我在表单上有一个文本框,当用户按Ctrl+F或Ctrl+S时,我希望将焦点指定给该文本框C# 如何为Windows窗体中的文本框指定快捷键(如Ctrl+;F)?,c#,winforms,c#-3.0,keyboard-shortcuts,ctrl,C#,Winforms,C# 3.0,Keyboard Shortcuts,Ctrl,我正在使用C#构建一个工具。这是一个Windows应用程序。我在表单上有一个文本框,当用户按Ctrl+F或Ctrl+S时,我希望将焦点指定给该文本框 如何执行此操作?一种方法是重写ProcessCMDKey事件 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == (Keys.Control | Keys.S)) { MessageBox.Show
如何执行此操作?一种方法是重写ProcessCMDKey事件
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Control | Keys.S))
{
MessageBox.Show("Do Something");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
编辑:或者,您可以使用按键事件-请参见。在表单上添加捕捉按键的事件,分析按键并查看其是否与某个快捷键匹配,然后指定焦点。捕获
按键事件,并在其中放置if语句以检查按下了哪些键
private void form_KeyDown(object sender, KeyEventArgs e)
{
if ((e.Control && e.KeyCode == Keys.F) || (e.Control && e.KeyCode == Keys.S)) {
txtSearch.Focus();
}
}
首先要确保您的Windows窗体属性为“KeyPreview=true”
第二件事是打开表单事件属性并双击“KeyDown”
及
在事件主体内编写以下代码:-
private void form1_KeyDown(object sender, KeyEventArgs e)
{
if ((e.Control && e.KeyCode == Keys.F) || (e.Control && e.KeyCode ==Keys.S))
{
TextBox1.Focus();
}
}
一个选项是将访问密钥分配给带有标签的控件。您可以根据与文本框相关的标签指定快捷方式
将访问密钥分配给带有标签的控件
首先绘制标签,然后绘制另一个控件
-或-
按任意顺序绘制控件,并设置控件的TabIndex属性
标签设置为比另一个控件少一个
将标签的UseMemonic属性设置为true
在标签的文本属性中使用符号(&)为标签指定访问密钥。有关详细信息,请参见创建访问权限
Windows窗体控件的键
资料来源:
在下图中,如果按ALT+Y,焦点将移到文本框
我过去常常选择另一种方法,但这更简单+1好的,刚刚添加了更多信息。