1. ホーム
  2. c#

[解決済み】Windows Formsアプリケーションにキーボードショートカットを実装する最良の方法とは?

2022-03-30 13:57:38

質問

Windowsの一般的なキーボードショートカットを実装する最良の方法を探しています(たとえば Ctrl + F , Ctrl + N を含む)を、私の Windowsフォーム アプリケーションをC#で作成しました。

このアプリケーションには、多数の子フォームをホストするメインフォームがあります (一度に 1 つずつ)。ユーザが Ctrl + F で、カスタム検索フォームを表示させたいと思います。検索フォームは、アプリケーションで現在開いている子フォームに依存します。

のようなものを使おうかと考えていました。 ChildForm_KeyDown イベントが発生します。

   if (e.KeyCode == Keys.F && Control.ModifierKeys == Keys.Control)
        // Show search form

しかし、これではうまくいきません。キーを押してもイベントが発生しないのです。どうすればいいのでしょうか?

どのように解決するのですか?

おそらく、フォームの キープレビュー プロパティをTrueに設定してください。をオーバーライドして ProcessCmdKey() メソッドが一般的な解決策です。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
  if (keyData == (Keys.Control | Keys.F)) {
    MessageBox.Show("What the Ctrl+F?");
    return true;
  }
  return base.ProcessCmdKey(ref msg, keyData);
}