- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Paintイベントが実行できません。。。
)
Paintイベントが実行できません
このQ&Aのポイント
- 開発環境Vista+VB2008において、Label_E_2.Paintイベントが実行できません。
- Label_E_2.Invalidate()からのPaintイベントが常に停止し、別のイベント中の行が緑色になります。
- コード中のFor Eachループが毎回の行でイベントを停止させている可能性があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Invalidate実行 ↓ Paintイベントが発生する ↓ イベントハンドラで画像を更新する ↓ Paintイベントが発生する ↓ イベントハンドラで画像を更新する ↓ Paintいべんt・・・以下無限にループ といった状況になっているのではないでしょうか?? Paintイベント内でImageプロパティを変更すると、このような無限ループに陥ることになるので、Paintイベントによる描画処理と画像の設定は別々に扱ったほうがよいと思います。 例:画像を設定してからInvalidaを呼び出す、など。 設計が変更できない状況であれば、フラグを用いて、Paintイベントの処理中に同じイベントが呼び出されたら即座に脱出するような仕組みを組み込めばよいかと。 Private blnPainting As Boolean = False Private Sub Control_Paint(ByVal sender As Object...(略) If blnPainting Then Return blnPainting = True ' 描画処理 ' この処理中にControl_Paintが呼び出されても大丈夫。 blnPainting = False End Sub
お礼
うぃず先生`ー´ゞ どうもありがとうございます!!! 明けましておめでとうございますm(_ _)m >Paintイベント内でImageプロパティを変更すると、このような無限ループに陥ることになるので おっしゃられます通り、コードの整理目的でImageプロパティ 変更コードをPaintイベント内に移動いたしました^^; この2日で他にも一気にいろんなことをやってしまいましたので 原因が掴めておりませんでしたが、おそらくビンゴでございます。 過去に他のコードで別サブルーチンを呼び出してしまうことに 気がついた経験がありましたので、今回もバグ取り中に注意していた つもりでございましたが、まさか自身のサブルーチンを 呼び出してしまいますとは。。。今すぐ直してきます! 本当にいつもどうもありがとうございます。お陰でまた今から コーディングの続きを楽しむことができます。 (いろいろとアドバイスいただけますお陰で、いろんな工夫が できるようになりました。 年末年始も結構いろんな機能を作製できました^^ まだバグ取りタイムがほとんどですが。。。orz) 今回も勉強になりました!どうもありがとうございました!!!