【发布时间】:2010-03-23 10:32:29
【问题描述】:
我正在使用 C# 构建一个工具。这是一个 Windows 应用程序。我在表单上有一个文本框,当用户按下 Ctrl + F 或 Ctrl + 时,我想将焦点分配给该文本框S.
我该怎么做?
【问题讨论】:
标签: c# winforms c#-3.0 keyboard-shortcuts ctrl
我正在使用 C# 构建一个工具。这是一个 Windows 应用程序。我在表单上有一个文本框,当用户按下 Ctrl + F 或 Ctrl + 时,我想将焦点分配给该文本框S.
我该怎么做?
【问题讨论】:
标签: c# winforms c#-3.0 keyboard-shortcuts ctrl
一种方法是覆盖 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);
}
编辑:或者,您可以使用 keydown 事件 - 请参阅 How to capture shortcut keys in Visual Studio .NET。
【讨论】:
捕获KeyDown 事件并在其中放置一个 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 属性 标签比另一个控件少一个。
将标签的 UseMnemonic 属性设置为 true。
在标签的 Text 属性中使用与号 (&) 来分配标签的访问键。有关详细信息,请参阅创建访问权限 Windows 窗体控件的键。
在下图中,如果您按下 ALT+Y,焦点将移至文本框。
【讨论】: