C#でWindowsフォームアプリケーションのフォームで、Enterキー(エンターキー)が押された時にクリックされるボタンと、Escキー(エスケープキー)が押された時にクリックされるボタンを設定する方法を紹介します。
本記事ではVisual Studioで作成した、Windowsフォームアプリケーションのプロジェクトに記述するコードを記載します。
Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。
目次
Enterキーでクリックされるボタンを設定する
キーボードのEnterキーが押された時にクリックされるボタンを設定するには、System.Windows.Forms名前空間にあるFormクラスのAcceptButtonプロパティを使用します。
フォームのAcceptButtonプロパティに、フォーム上に配置したボタンを設定します。
フォームのAcceptButtonプロパティは、フォームデザイナーのプロパティグリッド、またはコードで設定することができます。
デザイナーのプロパティグリッドで設定する
フォームデザイナーを開きます。
フォームデザイナーを開いたら、プロパティウィンドウを表示します。
プロパティウィンドウが表示されていない場合は、メニューバーの「表示」メニューにある「プロパティ ウィンドウ」をクリックするかF4キーを押してください。
上記の画像のプロパティグリッドは項目別ではなくアルファベット順で表示しています。
デザイナーのプロパティグリッドにあるAcceptButtonプロパティのドロップダウンリストから、Enterキーが押された時にクリックされるボタンを選択します。(ドロップダウンリストのアイテムには、フォーム上に配置したボタンの一覧が表示されます。)
コードで設定する
コードエディタを表示して以下のコードを入力します。
1 2 3 |
// フォームでEnterキーが押された時に反応するボタンを設定する // フォーム(this)のAcceptButtonプロパティにbutton1を指定 this.AcceptButton = this.button1; |
Escキーでクリックされるボタンを設定する
キーボードのEnterキーが押された場合は、FormクラスのAcceptButtonプロパティを使用しましたが、Escキーが押された時にクリックされるボタンを設定するには、FormクラスのCancelButtonプロパティを使用します。
CancelButtonプロパティの設定もAcceptButtonプロパティの時と同様です。
デザイナーのプロパティグリッドで設定する
デザイナーのプロパティグリッドにあるCancelButtonプロパティのドロップダウンリストから、Escキーが押された時にクリックされるボタンを選択します。(ドロップダウンリストのアイテムには、AcceptButtonプロパティと同じように、フォーム上に配置したボタンの一覧が表示されます。)
コードで設定する
コードエディタを表示して以下のコードを入力します。
1 2 3 |
// フォームでEscキーが押された時に反応するボタンを設定する // フォーム(this)のCancelButtonプロパティにbutton2を指定 this.CancelButton = this.button2; |
サンプルプログラム
ここではサンプルプログラムとして、システム(アプリケーション)にログイン(ログオン)するフォームを作成します。
ユーザーインターフェース
フォームには、ユーザーID(アカウント)の表題ラベル(label1)とユーザーIDを入力するテキストボックス(textBox1)とパスワードの表題ラベル(label2)とパスワードを入力するテキストボックス(textBox2)を配置し、ログインを実行するボタン(button1)と、ログインをキャンセルするボタンを配置します。
ソースコード
ログインボタン(button1)がクリックされた時のイベント処理と、キャンセルボタン(button2)がクリックされた時のイベント処理を実装します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
using System; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { // コンストラクタ public Form1() { InitializeComponent(); } // フォームロード時のイベント処理 private void Form1_Load(object sender, EventArgs e) { this.textBox2.PasswordChar = '*'; // フォームでEnterキーにログインボタンを設定する this.AcceptButton = this.button1; // フォームでEscキーにキャンセルボタンを設定する this.CancelButton = this.button2; } // ログインボタンクリック時のイベント処理 private void button1_Click(object sender, EventArgs e) { try { // ログインIDの入力を確認する string loginId = this.textBox1.Text; if (string.IsNullOrWhiteSpace(loginId)) { MessageBox.Show("ログインIDを入力してください。"); return; } // パスワードの入力を確認する string password = this.textBox2.Text; if (string.IsNullOrWhiteSpace(password)) { MessageBox.Show("パスワードを入力してください。"); return; } // ここにログインIDとパスワードが正しいかどうかの処理を記述... // ダイアログの戻り値にOKを指定 this.DialogResult = DialogResult.OK; // フォームを閉じる this.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } // キャンセルボタンクリック時のイベント処理 private void button2_Click(object sender, EventArgs e) { try { // ダイアログの戻り値にCancelを指定 this.DialogResult = DialogResult.Cancel; // フォームを閉じる this.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } |
ここで作成するログインフォームは、他のフォームまたはプログラムのエントリーポイント(Main)から、ShowDialogメソッドで表示され、戻り値にDialogResult.OKまたはDialogResult.Cancelを返してフォームを閉じます。
プログラムの実行
プロジェクトをビルドして実行(デバッグ)すると、ログインフォームが表示されます。
ユーザーが「ログインID」と「パスワード」を入力してログインするためのフォームが作成できました。