【VisualStudio】【C#】キャンセルボタン・デフォルト(アクセプト)ボタンを設定する 
2017/09/19 Tue [edit]
フォームアプリケーションなどではキャンセルボタン(Escキーでキャンセル)、デフォルト(アクセプト)ボタン(Enterキーで実行など)が設定されていると便利なことが多い。前回作った「ボタンを押してアプリケーションを終了」に設定してユーザビリティを上げてみよう(笑)。
キャンセルボタンを設定するにはフォームの「Form.CancelButton」プロパティにコントロール名(ボタン)を選択すれば Escキーに紐付き、デフォルト(アクセプト)ボタンを設定するには「Form.AcceptButton」プロパティにコントロール名(ボタン)を選択すれば Enterキーに紐づく。
(※) Visual Studio 2017 / Windows10(x64) で確認
例えば図のような名前が付いているとき、Escキーで「閉じる」が実行されアプリケーションが終了、Enterキーが押されたとき何らかの処理が行われるとしよう。その場合、Form1 のプロパティウィンドウでの設定とコードは以下のようになる。

![]() | ![]() |
●Escキーでアプリケーション終了、Enterキーで実行されるコード
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void buttonClose_Click(object sender, EventArgs e)
{
Application.Exit(); //アプリケーション終了
}
private void buttonExecute_Click(object sender, EventArgs e)
{
//何らかの処理
Console.WriteLine("buttonExecute_Click");
}
}
}
ちなみにボタンのクリックイベントはデザイン画面でボタンをダブルクリックするか、プロパティウィンドウのイベント(雷アイコンで切り替え)で「Click」の空欄をダブルクリックすれば、自動でコードが生成される(実装コードは「Form1.Designer.cs」を開いて「Windows フォームデザイナーで生成されたコード」を展開すれば「this.buttonExecute.Click += new System.EventHandler(this.buttonExecute_Click);」「this.buttonClose.Click += new System.EventHandler(this.buttonClose_Click);」と書かれているのがわかる)。
「Form.AcceptButton」や「Form.CancelButton」は実行時にも変更できるので、例えば状態によって Enterキーで何が実行されると使いやすいか?なんてことを考えて、コントロールのフォーカス位置などで変更してあげると、ユーザビリティの高いアプリケーションになると思う。
確か VisualStudio 6.0以前はボタン自体にプロパティがあったが、.NET以降はフォームで設定するようになったんだよね。たまに見つからなくて困る仕様変更の1つ(笑)。
(関連記事)
【VisualStudio】【C#】コードでアプリケーションを終了する / 終了コードを返す
- 関連記事
トラックバック
トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/267-30b2fe95
この記事にトラックバックする(FC2ブログユーザー)
| h o m e |