DOBON.NET DOBON.NETプログラミング掲示板過去ログ

【C#】DataGridの特定セルのテキストのフォントを変えたい

環境/言語:[C#]
分類:[.NET]

特定セルの色を変更することはできるのですが、特定セルのフォントの変更(太字にしたい)ができません。

<pre>
//DataGridTextBoxColumnを継承してクラスを作成
public class MyDataGridTextBoxColumn : DataGridTextBoxColumn
{
    //Paintメソッドをオーバーライドする
    protected override void Paint(Graphics g,
        Rectangle bounds,
        CurrencyManager source,
        int rowNum, Brush backBrush,
        Brush foreBrush,
        bool alignToRight)
    {
        //セルの値を取得する
        object cellValue =
            this.GetColumnValueAtRow(source, rowNum);
        if (cellValue != null)
        {
            //値が"0"のセルの前景色と背景色を変える
            if ((string) cellValue == "0")
            {
                foreBrush = new SolidBrush(Color.White);
                backBrush = new SolidBrush(Color.Black);

                //フォントを変更
                this.TextBox.Font = new Font("MS ゴシック",9,FontStyle.Bold);
            }
        }
        //基本クラスのPaintメソッドを呼び出す
        base.Paint(g, bounds, source, rowNum,
            backBrush, foreBrush, alignToRight);
    }
}
</pre>

以上のようにやってみたのですが、駄目なのでしょうか?
なぜかセルを選択されている状態だとフォントの変更が適応されてました。
(特定セルではなく、すべてのセルに対してですが・・・)

何か方法があればご教授願います。
> 以上のようにやってみたのですが、駄目なのでしょうか?
> なぜかセルを選択されている状態だとフォントの変更が適応されてました。

編集中のセルにはTextBoxが表示されますが、このTextBoxのフォントを変更したいということでしょうか?そうであれば、Editメソッドをオーバーライドし、フォントを変えたいセルが編集されるのか調べ、TextBoxのフォントをそれにあわせて設定すればできるのではないでしょうか。
> 編集中のセルにはTextBoxが表示されますが、このTextBoxのフォントを変更したいということでしょうか?そうであれば、Editメソッドをオーバーライドし、フォントを変えたいセルが編集されるのか調べ、TextBoxのフォントをそれにあわせて設定すればできるのではないでしょうか。


すみません、質問の仕方が間違っていました。
というか編集中のセルがTextBoxになるんですね・・勘違いしていました^^;
どうりで選択するとフォント変更が適応されてるわけですね。。

改めて私のしたいことはDataGridで特定のセルを強調表示させたいのです。
(具体的にはフォントを赤で太字にしたい)
強調表示の手法として、セルに色をつけることはこちらのTIPSを拝見して
できましたが、どうしても特定セルのみのフォント変更ができません。

何か方法はあるでしょうか?
既存の処理 ( base.Paint ) に任せず、自分で描画すれば良いのではないかと。
 こちらの Tips が参考になるでしょうか。

DataGridの列ヘッダテキストの配置方法のみを変更する
http://dobon.net/vb/dotnet/datagrid/aligncolumnheaderonly.html

DOBON.NET | プログラミング道 | プログラミング掲示板