こんにちは〜 フォームに終了するためのボタンを配置して、 押されると、終了するかどうかの確認ダイアログを出して 「はい」を押された時、または右上の「x」ボタンを押されたときに、 終了するようにしたいと思っています。 以下のように書いて、 「〜終了〜」ボタンを押すと、ダイアログが出て「はい」を押すと 終了するのですが、 「いいえ」と押したときに、もう一度終了確認ダイアログが表示されます。 どうして「いいえ」を押したときにもう一度ダイアログが 出てくるのかがわかりません。 どこがおかしいでしょうか? よろしくお願いします。m(_ _)m namespace Rensyu1 { /// <summary> /// MainWindow の概要の説明です。 /// </summary> public class MainWindow : System.Windows.Forms.Form { private System.Windows.Forms.Button button1; /// <summary> /// 必要なデザイナ変数です。 /// </summary> private System.ComponentModel.Container components = null; public MainWindow() { // // Windows フォーム デザイナ サポートに必要です。 // InitializeComponent(); // // TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。 // this.button1.Click += new EventHandler(this.button1_Click); this.Closing += new CancelEventHandler(this.form_OnClosing); } /// <summary> /// 使用されているリソースに後処理を実行します。 /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows フォーム デザイナで生成されたコード /// <summary> /// デザイナ サポートに必要なメソッドです。このメソッドの内容を /// コード エディタで変更しないでください。 /// </summary> private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // button1 // this.button1.Location = new System.Drawing.Point(96, 16); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(72, 40); this.button1.TabIndex = 0; this.button1.Text = "〜終了〜"; this.button1.Click += new System.EventHandler(this.button1_Click); // // MainWindow // this.AutoScaleBaseSize = new System.Drawing.Size(5, 12); this.ClientSize = new System.Drawing.Size(300, 100); this.Controls.Add(this.button1); this.Name = "MainWindow"; this.ResumeLayout(false); } #endregion static void Main() { Application.Run(new MainWindow()); } private void button1_Click(object source, EventArgs e) { this.Close(); } protected virtual void form_OnClosing(Object source, CancelEventArgs e){ if(MessageBox.Show(this, "終了しますか?","終了の確認",MessageBoxButtons.OKCancel) == DialogResult.Cancel) e.Cancel = true; } } }
分類:[.NET]