【问题标题】:How to assign a shortcut key (something like Ctrl+F) to a text box in Windows Forms?如何将快捷键(类似于 Ctrl+F)分配给 Windows 窗体中的文本框?
【发布时间】:2010-03-23 10:32:29
【问题描述】:

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

我该怎么做?

【问题讨论】:

    标签: c# winforms c#-3.0 keyboard-shortcuts ctrl


    【解决方案1】:

    一种方法是覆盖 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

    【讨论】:

    • 我曾经选择替代方案,但这更简单! +1
    【解决方案2】:

    捕获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();
        }
    }
    

    【讨论】:

      【解决方案3】:

      第一件事确保您的 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();
           }
      }
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

          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,焦点将移至文本框。

          【讨论】:

          • 好的,刚刚添加了更多信息。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-26
          • 1970-01-01
          • 1970-01-01
          • 2011-03-15
          相关资源
          最近更新 更多