- - PR -
VB6 での画面遷移方法について
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-11-10 17:48
であれば、遷移先の Form に .NET Framework ばりな ShowDialog メソッドを実装しましょう。 戻り値は、当然 DialogResult 列挙体で実装して、OK なのかキャンセルなのか判別しましょう。
先のレスの補足でも書きましたが、呼び出し元に戻る時は、Unload で良いです。
(説明下手なので、1 番簡単な例で説明します) Unload すれば、Unload イベントが発生しますよね。 それを呼び出し元が検知できれば良いわけです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-11-13 09:15
個人的には、やっぱりココが引っかかってしまいます。 何かしらのイベント処理を記述するなら、Form_Load でいいような気がしてしまいます(^_^;) | ||||||||||||
|
投稿日時: 2006-11-13 09:43
呼び出し元のフォームが関知するのに、どうやって Form_Load イベントで書くというのでしょう? > > [一覧] から [メンテナンス] へ遷移する時は、[一覧] は Hide。 > > [メンテナンス] から [一覧] に戻る時、[メンテナンス] は Unload。 > > それを呼び出し元が検知できれば良いわけです。 この状況では、そんな実装にする方が難しいと思われますが... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-11-13 09:56
言葉足らずでしたね。すいません。 私のように Show/Unload を繰り返す方法とじゃんぬさんのおっしゃる方法とでそれ程の差異が私には感じられなかった、ということです。 (ただし、フォーム表示のコストが高い場合は毎回Load は無駄かもしれません) じゃんぬさん方法は、 1.呼び出し先.Show 2.呼び出し元.Hide 3.Unload 呼び出し先 4.呼び出し元が呼び出し先の Unload イベントを取得し、表示処理 5.呼び出し元.Show という感じでしょうか。私の場合は、 1.呼び出し先.Show 2.Unload 呼び出し元 3.呼び出し元.Show 4.Unload 呼び出し先 となります。 で、じゃんぬさん方式の「4.」で画面編集処理を行なうのであれば、私の方式の「3.」で Show メソッド実行時に、Form_Load で処理してしまってもそう大差はないのかな、と感じています。 画面 Load 時のコストによるとは思いますけど。 | ||||||||||||
|
投稿日時: 2006-11-13 11:13
概念上は大きく変わると思いますが、利点を見出せないのであれば致し方ないでしょう。 以下の文は、あくまで私見ですので放置でも良いです。 遷移において、[戻る] という行為は、初期化の対象になりません。 この無意味な Load イベントは、保守性を下げる要因のひとつだと思います。 たとえば、初回実行時のみ何かをする仕様が加わった場合、どうやって制御しますか? 概念を守るのは、保守性を上げる有効な手段です。 仕様変更による対応の柔軟さと、引き継ぎなどによる保守性に関わります。 また、「Load イベントが発生するように 'している' から Load イベントが発生する」 は間違いです。 これでは、「Call Command1_Click」 などという、イベントの概念を無視したコードと大差がないです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-11-13 12:59
おっしゃりたい事が分かりました。 確かに、保守性を考えると Load 処理と画面編集処理を分ける意味合いがありますね。 >これでは、「Call Command1_Click」 などという、イベントの概念を無視したコードと大差がないです。 耳が痛いお言葉です(^_^;) 自分の見てきた範囲のソースしか理解の幅が無いため、このような問題に気付かないことがあるので、大変勉強になります。 ありがとうございました。 |