2011-12-06 13 views
1

私は複数のコントロールと[OK]と[キャンセル]ボタンを持つウィンドウフォームを持っています。 [OK]ボタンのClickイベントハンドラで、フォームにエラーがあるかどうかを確認します。エラーがある場合は開いたままにするフォームが必要です。しかし、以下のコードは動作していません。エラーがある場合は、フォームを閉じて呼び出し元に戻ります。フォームを表示して表示するには、以下の2行があります。Windowsフォームで[OK]ボタンをクリックしたときにフォームにフォーカスを戻す方法は?

PtForm paymentForm = new PtForm(); 
ptForm.ShowDialog(); 

private void btnOk_Click(object sender, EventArgs e) 
    { 
     this.ValidateChildren(ValidationConstraints.Visible); 
     string ErrorString = GetValidationErrors(); 
     MessageBox.Show(ErrorString, "Errors"); 

     if (!string.IsNullOrEmpty(ErrorString)) 
     { 
      return; 
     } 

//Processing 

} 

ありがとうございました。

+1

this.DialogResultプロパティをNoneに戻します。 –

答えて

3

このコードには、フォームを閉じることはありません。したがって、犯人はこのコードの外になければなりません。

DialogResult.OKにOKボタンのDialogResultプロパティを設定しましたか?それはなぜフォームが閉鎖しているのかを説明します。 AFAIK、ボタンでDialogResultを設定すると、それが起こります。コード内でそれを拒否する方法はありません。

その場合は、デザイナーに戻り、ボタンのDialogResultをNoneに戻す必要があります。次に、btnOk_Clickメソッドの最後に、すべての入力を検証してダイアログを閉じても安全だと判断したら、フォームのDialogResultプロパティをOKに設定する行を追加します。

+0

ありがとうございました。これは私の問題を解決しました。 – Jyina

1

ボタンのDialogResultプロパティを削除します。 Noneに設定します。

+0

ありがとうございます。 – Jyina

関連する問題