(VS2005、.Net 2.0)
ShowDialog() メソッドを使用してダイアログとして表示されるフォームがあります。フォームの CancelButton プロパティは、フォームのボタンに設定されます。そのボタンの DialogResult を None に設定しても、ボタンをクリックするとダイアログが閉じます。私はこれを起こしてほしくありません - ダイアログを閉じるかどうかを制御できるようにしたいのです。
この問題は、フォームの AcceptButton では発生しません。そのボタンの DialogResult を none に設定すると、必要な処理を実行してから、フォームの DialogResult を手動で設定してフォームを閉じるかどうかを決定できます。
CancelButton プロパティは、Escape が押された場合に「クリック」する必要があるボタンを示すためだけのものであると考えました (AcceptButton は、Enter が押されたときに「クリック」するボタンのみを示すことになっているのと同じように)。私はこれで間違っていますか?フォームが閉じている他の理由を見逃していませんか? それともこれはバグですか?
編集:コードが追加されました。これはキャンセルボタン(ボタン1)を持つダイアログフォーム(フォーム2)です。キャンセル ボタンはフォームの CancelButton のみであり、DialogResult が Cancel に設定されていませんが、ボタンを押すとフォームが閉じられます
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Name = "button1";
this.button1.Text = "button1";
//
// Form2
//
this.CancelButton = this.button1;
this.Controls.Add( this.button1 );
this.Name = "Form2";
this.Text = "Form2";
this.ResumeLayout( false );
}