Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
ListBoxクリック ページ移動
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=10881#CommentId23725
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
m190
 (社会人)
投稿日時
2012/6/3 22:13:26
やり方が様々あるというだけでなく、使い方も色々だよ、ってことも言えますね。
たとえば、あくまで Form1がメインで一時的に Form2を表示するのか、それとも Form1は
用済みだから破棄しちゃって Form2に乗り換えたいのか、あるいは Form1が本命なんだけど
Form2も Form3も Form4も色ーんな Formとお付き合いしたいのか、そのお付き合いの仕方(?)
みたいのを想定すると、逆にどれが適切な手法かが選び易くなる、、、みたいな感じでしょうか。
話は変わりますが、
終了ボタンとForm右上の×ボタンの区別について、最初は、FormClosing イベントのときに渡される
FormClosingEventArgs クラスの CloseReason プロパティなどで調べれば違いが分かるかと思ったんですが、
(実験の仕方が悪いのかもしれませんけど)どちらの場合も UserClosing だったため見分けることが出来ませんでした。
# Form1側 を閉じたときの FormOwnerClosing ならば区別できました
仕方が無いので、何か簡単そうな方法はないかと考えたんですが、
終了の方法(=Closeの呼び出しかどうか)の情報をクラスレベルで持つことにして、
その情報を見て処理を切り分ける、って感じの流れになるのかな?と思いました。
たとえば
終了ボタンを押したとき、情報に「終了ボタンを押したんだよ!(=Closeの呼び出しだよ!)」
みたいな情報を記憶させた上で Close()メソッドを呼び出す。
#Showが出来るんだから、Closeメッソドをオーバーロードしても良いのかも
そして Formが閉じられる際に必ず通過する FormClosingイベントなどでその情報を読み取って、
もしそれが、×ボタンによる終了だったら(=Closeメソッドの呼び出しではない場合)
Closeをキャンセルする、みたいな感じです。
#ただ、他に方法ありそうな気もするんですが、、、何だかヘルプ読んでても難しくて。。。
一番手軽そうだったのがこの方法でした。