VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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 フォームの有効期間』というトピックに
詳しく書かれていますので、参照してみてください。



それと、それぞれの画面がお互いを操作しあうような設計は、フォーム間の結びつきが
強くなってしまう上に、誰が誰をロードするのかといった、フォームの有効期間の管理が
複雑になってしまいがちです。処理の流れを見直されることをおすすめします。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -