- - PR -
DataGridの特定セルに対して色を変化させる
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-09-23 22:03
ああ、確かにこの部分はそうですね。疑いようもありません。 //ところでこのcellValueは必ずbyteであることが保証されてるんでしょうか? ではLabelはどこに消えたんですか? どう働くんでしょう? ……ん〜、ひょっとして特定の(Labelで指定された)カラムにだけこの派生したMyDataGridTextBoxColumnを適用して、要件を満たすセルの色を変更したいということかしらん? それならDataGridTextBoxColumnのインスタンスを作るときにLabelで指定されてるかどうか判断して、されているならMyDataGridTextBoxColumnを、そうでないならそのままのDataGridTextBoxColumnをTableStyle.GridColumnStylesにAddしてやればいいんですけど。
この部分を
こんな感じですけどねー。 まあ私の当て推量がはずしてたら目も当てられませんが。 | ||||||||||||
|
投稿日時: 2005-09-24 00:55
Hongliang 様 返信ありがとうございます。
コード: -------------------------------------------------------------------------------- DataGridTextBoxColumn cs; // IsMatchThisColumnNameは、名前に合致するLabelの値を判断するヘルパメソッド。 // bool値を返すように適当に書いてください if (IsMatchThisColumnName(MyColumnName)) cs = new MyDataGridTextBoxColumn(); else cs = new DataGridTextBoxColumn(); -------------------------------------------------------------------------------- なんですが、この文だと、 public class MyDataGridTextBoxColumn : DataGridTextBoxColumn 文を 条件:変数(各ColumnラベルTextの値)を上記文に含まれる if ((byte)cellValue <= 20) { foreBrush = new SolidBrush(Color.Red); } の「20」の部分に変数を与えることができず、 public class MyDataGridTextBoxColumn : DataGridTextBoxColumn 文 を各Column名の数だけ作らなくては、ならないような気がいたします。 できれば、 public class MyDataGridTextBoxColumn : DataGridTextBoxColumn 文 を1つの文だけで、変数により条件分岐することはできないでしょうか? | ||||||||||||
|
投稿日時: 2005-09-24 06:38
ああ、なるほど、ようやっと理解できました。
//うむぅ、これは私の理解力が低かったな……。 そういうことなら私が初めに提案したのが大体使えそうですね。 MyDataGridTextBoxColumnを作るときに条件を与えると言う奴。 MyDataGridTextBoxColumnのコンストラクタにint(なりbyteなり)を取るものを作り、それにLabelから取得した値を渡します。 MyDataGridTextBoxColumnは内部でそれをフィールドにとっておき、Paintメソッド内でそれと現在のセルの値を比較して色を塗り分けます。 Paintイベント内で一々Labelの値を見に行く必要はないでしょう。 | ||||||||||||
|
投稿日時: 2005-09-24 08:45
されたいことが今一歩わかっていないのですが、上のColumn1と比較したいということなのでしょうか? であれば、MyDataGridTextBoxColumnの中でthis.HeaderTextで比較できるはずです。 外れたことを言っていたらごめんなさい。 | ||||||||||||
|
投稿日時: 2005-09-24 09:40
Hongliang様 trapemiya様 返答ありがとうございます。
引用: -------------------------------------------------------------------------------- MyDataGridTextBoxColumnを作るときに条件を与えると言う奴。 MyDataGridTextBoxColumnのコンストラクタにint(なりbyteなり)を取るものを作り、それにLabelから取得した値を渡します。 MyDataGridTextBoxColumnは内部でそれをフィールドにとっておき、Paintメソッド内でそれと現在のセルの値を比較して色を塗り分けます。 -------------------------------------------------------------------------------- 実際にコード的にどのようなことか、もう少し教えていただけないでしょうか? 宜しくお願いいたします。 [ メッセージ編集済み 編集者: sakepower 編集日時 2005-09-24 13:49 ] | ||||||||||||
|
投稿日時: 2005-09-27 14:12
Hongliang様
遅くなりましたが、 引用: -------------------------------------------------------------------------------- MyDataGridTextBoxColumnは内部でそれをフィールドにとっておき、Paintメソッド内でそれと現在のセルの値を比較して色を塗り分けます。 -------------------------------------------------------------------------------- が出来るようになり、解決いたしました。 本当にありがとございました。 |