我正在使用 C# 构建一个工具。这是一个 Windows 应用程序。我在表单上有一个文本框,我想在用户按下Ctrl+F或Ctrl+时将焦点分配给该文本框S。
我该怎么做呢?
我正在使用 C# 构建一个工具。这是一个 Windows 应用程序。我在表单上有一个文本框,我想在用户按下Ctrl+F或Ctrl+时将焦点分配给该文本框S。
我该怎么做呢?
一种方法是覆盖 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 事件 - 请参阅如何在 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,则焦点将移至文本框。