C# - .net 備忘録 |
mfcプログラマからみたC#や.netに関するメモです。
(記載内容について正しいことを保証するものではありません。MSDN等で確認してください)
VS2008が生成したフォームアプリにとりあえず、フォームデザイナでボタンを1個貼り付けてキャプションをOKにすると、こんな画面が表示されます。
もちろんボタンを押しても何も起きません。
とりあえずボタンを押下するとアプリが終了するようにしたい。
アプリの終了方法は2通り考えられます。
プログラムの開始は、こんなコードです。
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace test2 { static class Program { /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } }
関係するのはApplication.Run(new Form1());の部分でForm1のオブジェクトを生成してApplicationクラスのRun()メソッドに渡している。ここを抜けてくるとプログラムはストンと落ちて終了することがわかります。
このプログラムが抜けてくるのは、フォームがクローズするか明示的にApplicationクラスのExit()を呼び出せばよいようである。
さっそく、ボタンハンドラをデザイナでボタンをダブルクリックするとハンドラが生成されます。
その1)フォームをClose
private void button1_Click(object sender, EventArgs e) { this.Close();
}
その2)ApplicationをExit
private void button1_Click(object sender, EventArgs e) { Application.Exit(); }
使い分けは、フォーム内ならClose()でフォーム以外の場所から手っ取り早くプログラムを終了させるにはApplication.Exit()かなと思いますが、終了処理をどのようにするかの兼ね合いで決めればいいのかもしれません。
あと、OKボタンをダイアログのOKボタンのようにEnterキーを有効にすにはプロパティでDialogResultをOKに設定すればいいようです。同様にキャンセルボタンをEscキーなども効くようにするにはDialogResultプロパティをCanselに設定すればいいようです。(このプロパティは後述するダイアログタイプのフォームを作成したときの戻り値とも関係している)