- - PR -
VB.NETのCLOSEメソッド
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-05-02 20:49
VB.NETで開発しています。
FORMAからFORMBを起動します。 FORMBのFORM_LOADイベントでエラーが発生した場合FORMBを終了したいです。 FORMBのFORM_LOADイベントからFORMB.CLOSEを実行しても画面がCLOSEしません。 どのように記述すればFORMBのFORM_LOADに画面を終了できるのでしょうか? おしえてください。 | ||||||||||||||||
|
投稿日時: 2003-05-03 15:20
こんにちわ。
MLの受け売りなんですが、FormB側の処理でのエラー発生時に例外をthrowさせてFormA側でキャッチして、Closeしてみてはいかがでしょうか。 VB.NETは不得意なので、C#なんですが(^^; サブフォームの処理。 ここでは例外発生をそのままスローしていますが、自分でスローしてもいいと思います。
メインフォーム側でApplication.ThreadExceptionイベントハンドラを捕捉するクラスを用意します。
エントリポイントでイベントハンドラのセット
ボタンクリックでフォーム生成後にモーダル表示。 ここでは例外が発生してもしなくても最後にはフォームを閉じますが、 例外時だけの対応も可能だと思います。
ではでは(^^)/ | ||||||||||||||||
|
投稿日時: 2003-05-03 17:46
こんにちは。
>FORMBのFORM_LOADイベントからFORMB.CLOSEを実行しても画面がCLOSEしません。 気になって試してみました。 私の環境では何事もなく無事にフォームを閉じることができます。 何かエラーが出るのですか? Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Close() End Sub | ||||||||||||||||
|
投稿日時: 2003-05-03 19:00
rucioさん、こんにちは。
FORMAからFORMBを起動?する際にShowメソッドを使っていればFORMB_LOADでCloseできますが、ShowDialogメソッドの場合はCloseできません。 ShowDialogが戻り値のあるメソッドの為かどうか不明ですが(笑)、 何せLoad中には自分自身のCloseもDisposeもできません。 Disposeはできますが、えらいことに... | ||||||||||||||||
|
投稿日時: 2003-05-04 09:56
>shipmasterさん
エラーっていうのがExceptionレベルのものなのか、 それとも何らかの基準に照らし合わせてNGなのかによりますが、 後者の場合ならShowDialogの前にやってしまうのもありなのでは。 dim frmB as new classFormB if frmB.手作り初期チェックメソッド = True Then frmB.ShowDialog() else どうする? end if | ||||||||||||||||
|
投稿日時: 2003-05-06 14:04
すいません。shipmasterさんと同じような質問なんですが、(vb.netで開発)
ラフィンさんが言われるようにShowDialogを使用するとcloseができないんですが、 戻り値がある為どうしてもShowDialogメソッドを使用したいんですけど、 その場合って、ShowDialogの前に実行する以外に何か方法がありますでしょうか? ありましたら教えていたたきたいんですけど、お願いします。 | ||||||||||||||||
|
投稿日時: 2003-05-06 21:53
>その場合って、ShowDialogの前に実行する以外に何か方法がありますでしょうか?
一瞬表示されてしまいますが PaintイベントでCloseするというのは邪道でしょうか? もっといい方法があるかもしれません。 | ||||||||||||||||
|
投稿日時: 2003-05-07 09:49
何の解決にもならないかもしれませんが、この問題は.NET Framework 1.1では修正されています。参考:http://www.gotdotnet.com/team/changeinfo/Backwards1.0to1.1/default.aspx#00000006
|