2007年9月3日月曜日

伝票レイアウトセル(5) セル その2

今回はセルクラスの一番のポイント。Paintメソッド。

このメソッドでやることってのは単純で、「DataGridViewの必要な領域にイメージを描写する」ということ。
テキスト系のセルであれば、設定されている値とかを画面に描写するし、イメージ系であればそのままグラフィックを描写してあげればいいんだよね。

ただこの伝票レイアウトセルの場合、表示したいイメージというのはセル側からではわからないのよ。
(実際には編集コントロールにて生成されるユーザーコントロールのイメージを描写したいから)

そのためDataGridView.Paintメソッドでは「編集コントロールでホストするコントロールのインスタンスを生成、値を展開後イメージをキャプチャする」という処理が必要になるね。どうみても重い処理になるのは間違いないところだw

ユーザーコントロールその2で書いてあるイメージのキャプチャを利用することになりやす。
こいつを「値の展開後」に呼び出してあげてキャプチャ、その次にgraphics.DrawImageメソッドで画面に表示というか描写というか。ユーザーコントロールその1で定義した、「値をコントロールへ」と「コントロールから値へ」というイベントはここで呼び出すことになります。

あー、なのでイベント用メソッドはProtectedで問題なし、というのは間違いですね。Protected Friendじゃないといけないっす。

ちなみにインスタンスを生成した際、親DataGridViewに追加するのではなく、親.TopLevelControl.Controls.Addとしたほうがいいと思われ。そのほうが余分な制御が走らない分いいと思いますわ。もちろん追加するインスタンスの座標は-1でも掛けて目に見えない場所にしておくこと。そうすればOK。

それでPaintメソッドはもう少し話が続くので次回の記事までひっぱります。
毎回こんな処理やられたら大変だー、というところです。

0 件のコメント:

コメントを投稿