Enterキー、Esc キーが押された時にクリックされるボタン(実行ボタン、キャンセルボタン)を設定する [C#]

C#でWindowsフォームアプリケーションのフォームで、Enterキー(エンターキー)が押された時にクリックされるボタンと、Escキー(エスケープキー)が押された時にクリックされるボタンを設定する方法を紹介します。

本記事ではVisual Studioで作成した、Windowsフォームアプリケーションのプロジェクトに記述するコードを記載します。
Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。

Windowsフォームアプリケーションのプロジェクト(ソリューション)を作成する。[C#]
Visual StudioでC#のWindowsフォームアプリケーションのプロジェクト(ソリューション)を作成する方法を記載します。 ...

Enterキーでクリックされるボタンを設定する

キーボードのEnterキーが押された時にクリックされるボタンを設定するには、System.Windows.Forms名前空間にあるFormクラスのAcceptButtonプロパティを使用します。
フォームのAcceptButtonプロパティに、フォーム上に配置したボタンを設定します。
フォームのAcceptButtonプロパティは、フォームデザイナーのプロパティグリッド、またはコードで設定することができます。

デザイナーのプロパティグリッドで設定する

フォームデザイナーを開きます。
フォームデザイナーを開いたら、プロパティウィンドウを表示します。
プロパティウィンドウが表示されていない場合は、メニューバーの「表示」メニューにある「プロパティ ウィンドウ」をクリックするかF4キーを押してください。

フォームデザイナーのプロパティグリッド
上記の画像のプロパティグリッドは項目別ではなくアルファベット順で表示しています。

デザイナーのプロパティグリッドにあるAcceptButtonプロパティのドロップダウンリストから、Enterキーが押された時にクリックされるボタンを選択します。(ドロップダウンリストのアイテムには、フォーム上に配置したボタンの一覧が表示されます。)

フォームデザイナーのAcceptButtonプロパティ

コードで設定する

コードエディタを表示して以下のコードを入力します。

Escキーでクリックされるボタンを設定する

キーボードのEnterキーが押された場合は、FormクラスのAcceptButtonプロパティを使用しましたが、Escキーが押された時にクリックされるボタンを設定するには、FormクラスのCancelButtonプロパティを使用します。
CancelButtonプロパティの設定もAcceptButtonプロパティの時と同様です。

デザイナーのプロパティグリッドで設定する

デザイナーのプロパティグリッドにあるCancelButtonプロパティのドロップダウンリストから、Escキーが押された時にクリックされるボタンを選択します。(ドロップダウンリストのアイテムには、AcceptButtonプロパティと同じように、フォーム上に配置したボタンの一覧が表示されます。)

フォームデザイナーのCancelButtonプロパティ

コードで設定する

コードエディタを表示して以下のコードを入力します。

サンプルプログラム

ここではサンプルプログラムとして、システム(アプリケーション)にログイン(ログオン)するフォームを作成します。

ユーザーインターフェース

フォームには、ユーザーID(アカウント)の表題ラベル(label1)とユーザーIDを入力するテキストボックス(textBox1)とパスワードの表題ラベル(label2)とパスワードを入力するテキストボックス(textBox2)を配置し、ログインを実行するボタン(button1)と、ログインをキャンセルするボタンを配置します。

ログインフォームデザイン

ソースコード

ログインボタン(button1)がクリックされた時のイベント処理と、キャンセルボタン(button2)がクリックされた時のイベント処理を実装します。

ここで作成するログインフォームは、他のフォームまたはプログラムのエントリーポイント(Main)から、ShowDialogメソッドで表示され、戻り値にDialogResult.OKまたはDialogResult.Cancelを返してフォームを閉じます。

プログラムの実行

プロジェクトをビルドして実行(デバッグ)すると、ログインフォームが表示されます。

ログインフォーム起動

ユーザーが「ログインID」と「パスワード」を入力してログインするためのフォームが作成できました。