- - PR -
呼び出されたFORM
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-08-29 11:00
こんにちは。
VB2005で、1つ教えて下さい。 FORM1からFORM2を表示させます。 Dim FORM2 As Object = New FORM2 FORM2.ShowDialog() FORM2.Dispose() というコードです。 そこでFORM2の ボタン_Clickイベントで 入力内容をチェックしエラーならばメッセージボックスを表示して 再入力させたいのですが、OKをクリックするとFORM1に戻ってしまいます。 If チェック Then MessageBox.Show("正しく入力して下さい", _ Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Exit Sub End If とボタン_Clickイベントでコードを書いています。 FORM1に戻らないようにするにはどうするとよいのでしょうか? よろしくお願いします。 | ||||||||||||
|
投稿日時: 2008-08-29 11:44
こんにちは。
FORM2のFormClosingイベントに If e.CloseReason <> CloseReason.UserClosing Then e.Cancel = True End If を書いてみましたがどうでしょうか? 調べましたらe.CloseReason がNoneの不明の理由で閉じられます。 | ||||||||||||
|
投稿日時: 2008-08-29 12:06
こんにちは。
画面を戻したくない時に、Form2.ボタン.DialogResultを System.Windows.Forms.DialogResult.Noneにすれば良いの ではないでしょうか? たぶん、Form2.ボタン.DialogResultは、現在OKかYesに なっているのでは? あと余談ですが、 Dim FORM2 As Object = New FORM2は、何か理由があって Objectで受け取ってるのでしょうか?理由がなければ、 Dim FORM2 As Form で良いのではないでしょうか? | ||||||||||||
|
投稿日時: 2008-08-29 13:06
ありがとうございます。
DialogResultで、解決しました。 ご指導ありがとうございました。 | ||||||||||||
|
投稿日時: 2008-08-29 13:48
根本的に問題を解決するために、なぜ "戻ってしまう" のかを知る必要があります。 そうしないと、
このように最適でない方法を選択してしまう可能性が高くなります。 あなたがそのように指示しない限り勝手に閉じられることはありません (ウィンドウの閉じるボタン等は除く)。 コードにその指示が含まれるか、あるいはその Button の DialogResult プロパティが指定されているからだと考えられます。 後者の場合 DialogResult プロパティが変更された後に再度 None に戻すというのは冗長です。 また今回のように入力チェックがある場合は検証漏れの温床になりますので、Button に DialogResult プロパティを設定しないでおきます (None のまま)。 入力チェックが問題なくすべて終わった 1 ルートのみで Form の DialogResult プロパティに設定するようにしましょう。
理由がなければ Dim form2 As [その Form の正しい型] が望ましいです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1