投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/2/6 10:13:23
> なんか話が難しくなってきたのですが
まぁ、最初の質問からして中級者以上の話に見えましたし。

で。

そもそも、先の要件において、処理順番を意識したコードにする事が良い設計と言えるかと問われれば、個人的には 否 と答えます。

描画順が重要な意味を持つのであれば、それらを分離して、たとえば「背景描画イベント」「前景描画イベント」などに分離した方が分かり易いのでは無いでしょうか(たとえば DataGridView における RowPrePaint, RowPostPaint, CellPainting イベントのように)。もし、イベントの数を無闇に増やしたくないのであれば、DataGridViewCellPaintingEventArgs における PaintParts プロパティ(と Paint メソッド)のように、そのイベントにて何を描画させたいのかを示すような実装にした方が、「順番」で管理するよりも、処理の意図が分かりやすくなるかと思います。


> こういうことでしょうか?
肝心の『実行中に描画の有無を動的に切り替えるためのフラグ』のコードが抜けているので判断に困りますが、実装案の一つになるとは思います。OnPaint メソッドではなく Paint イベントを利用してしまっている点と、List を Public フィールドにしている点は改善の余地がありそうですが。