如何将快捷键(如Ctrl + F)分配给Windows窗体中的文本框?

She*_*har 9 c# keyboard-shortcuts ctrl winforms c#-3.0

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

我该怎么做呢?

Ase*_*tam 13

一种方法是覆盖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);
}
Run Code Online (Sandbox Code Playgroud)

编辑:或者您可以使用keydown事件 - 请参阅如何在Visual Studio .NET中捕获快捷键.


Way*_*yne 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();
    }
}
Run Code Online (Sandbox Code Playgroud)