- - PR -
DialogResultについて
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-08-16 13:12
いつも参考にさせて頂いております。
DialogResultについて質問があります。 ある画面1から画面2をShowDialogで表示して画面2で押されたボタンによって処理を分けています。 画面2でOKとキャンセルの二つのボタンがあるとして、それぞれのDialogResultプロパティにOKとキャンセルが設定されています。 OKボタンを押された時、画面2上にあるテキストボックスの内容をチェックしています。 チェックでエラーがあった場合、フォーカスを当てて画面を閉じない様にしたい為、 クリックイベントでDialogResultにNoneを設定した所、画面が閉じてしまいます。 その為、最初のDialogResultプロパティでNoneを設定して、エラーが無かった場合クリックイベントでOKを設定した場合、今度は正しく閉じられませんでした。 フォームのClosingイベントでキャンセルすれば良いのかもしれませんが、 ボタンのクリックイベントでうまくやる方法はないでしょうか? よろしくお願い致します。 | ||||
|
投稿日時: 2005-08-16 13:26
ひょっとしてDialogResultを設定した後this.Closeとか呼んでいるのでしょうか?
MSDNのDialogResultプロパティの解説を読めば分かりますが、DialogResultプロパティを設定した時点でダイアログは非表示になります。Closeを呼ぶ必要はありません。 //代わりに呼出元でDisposeを呼ぶべきですが。確かどこかにダイアログのインスタンスは使い回すべきでないという記事があったような気が。 画面を閉じないようにしたい場合、そもそもDialogResultプロパティを設定しなければいいだけです。 | ||||
|
投稿日時: 2005-08-16 13:35
Hongliangさん、ご回答ありがとうございます。
ちょっと勘違いをしていたようです。 ボタンのDialogResultをクリックイベント内で変更しても 直には有効にならないようです。 フォームのDialogResultを直接設定すれば良かったようです。 お手数、お掛けいたしました。 ありがとうございます。 | ||||
|
投稿日時: 2005-08-16 14:17
そうですね。 DialogResult で戻り値を返すこと自体が、ShowDialog メソッドと同意ですから、 必ず、using または Try 〜 Finally で Dispose すべきだと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
1
