投稿日 | : 2006/10/02(Mon) 19:21 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re: 画面呼び出しで実行時エラー「438」が発生 |
現象を再現できる最小限のコードを示す事は可能ですか?
少なくとも当方では、提示されたコードから今回の件を再現することができませんでした。
> From_A.Show
# "フロム・エー(From_A)" → "フォーム・エー(Form_A)" かな…。
> 場合、どうしても、画面AのFrom_Loadが動いてしまいます。
Load イベントの先頭にブレークポイントを貼っておき、一時停止されたときに
[Ctrl] + [L] キーを押して、呼び出し履歴を表示してみてください。
どの行が原因でリロードされてしまっているのか、わかるかと思います。
> どうしても、画面AのFrom_Loadが動いてしまいます。
フォームの Unload 後は、そのフォーム上のコントロールや、あるいは、
フォームの実体を必要とするプロパティやメソッド(hWnd, Move, Caption等)には、
絶対にアクセスしてはいけません。不用意にそれらのメンバを操作しようとすると、
今回のような、暗黙のリロードが発生してしまうからです。
この件に関しては、ヘルプの『Visual Basic フォームの有効期間』というトピックに
詳しく書かれていますので、参照してみてください。
それと、それぞれの画面がお互いを操作しあうような設計は、フォーム間の結びつきが
強くなってしまう上に、誰が誰をロードするのかといった、フォームの有効期間の管理が
複雑になってしまいがちです。処理の流れを見直されることをおすすめします。