9

我正在使用 C# 构建一个工具。这是一个 Windows 应用程序。我在表单上有一个文本框,我想在用户按下Ctrl+FCtrl+时将焦点分配给该文本框S

我该怎么做呢?

4

5 回答 5

14

一种方法是覆盖 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 中捕获快捷键

于 2010-03-23T10:35:15.683 回答
5

捕获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();
    }
}
于 2016-09-23T18:47:01.667 回答
2

第一件事确保您的 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();
     }
}
于 2019-01-26T06:17:32.687 回答
0

在表单上添加一个捕捉按键的事件,分析按键并查看它是否与您的某个快捷键匹配,然后分配焦点。

于 2010-03-23T10:36:25.813 回答
0

一种选择是将访问键分配给带有标签的控件。您根据与文本框相关的标签分配快捷方式。

将访问键分配给带有标签的控件

  1. 先绘制标签,然后再绘制另一个控件。

-或者-

以任意顺序绘制控件并将标签的 TabIndex 属性设置为比另一个控件小一个。

  1. 将标签的 UseMnemonic 属性设置为 true。

  2. 在标签的 Text 属性中使用与号 (&) 为标签分配访问键。有关详细信息,请参阅为 Windows 窗体控件创建访问键。

来源: https ://docs.microsoft.com/en-us/dotnet/desktop/winforms/controls/how-to-create-access-keys-with-windows-forms-label-controls?view=netframeworkdesktop-4.8

在下图中,如果您按 ALT+Y,则焦点将移至文本框。

例子

于 2021-04-13T05:20:02.367 回答