C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: CellPaintingイベントで文字が表示されない


(過去ログ 148 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■86569 / inTopicNo.1)  CellPaintingイベントで文字が表示されない
  
□投稿者/ kiku (27回)-(2018/02/16(Fri) 09:56:55)

分類:[.NET 全般] 

最終的な目的は、DataGridViewのある特定セル内の文字列の一部を強調表示したいことなのですが、
その前に、ある特定セル内の文字列を自由に描画できるかどうか試そうと思いました。
下記ソースのように試したのですが、文字が表示されません。
何が原因でしょうか?

ある特定セル内にはきちんと文字が入っている状態なのですが、
このソースを付け加えると、空白になってしまいます。

環境
 ・WindowsFormアプリ
 ・C#
 ・VisualStudio2017

ソース
        private void DataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
        {
            if (e.ColumnIndex == 9 && e.RowIndex >= 0 &&
                (e.PaintParts & DataGridViewPaintParts.ContentForeground) ==
                    DataGridViewPaintParts.ContentForeground)
            {
                TextFormatFlags flags = TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter;
                TextRenderer.DrawText(e.Graphics, "aaa", e.CellStyle.Font, e.CellBounds, Color.Black, flags);
                DataGridViewPaintParts paintParts = e.PaintParts & ~DataGridViewPaintParts.ContentForeground;
                e.Paint(e.ClipBounds, paintParts);
                e.Handled = true;
            }
        }

引用返信 編集キー/
■86570 / inTopicNo.2)  Re[1]: CellPaintingイベントで文字が表示されない
□投稿者/ Hongliang (615回)-(2018/02/16(Fri) 10:07:03)
> TextFormatFlags flags = TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter;
> TextRenderer.DrawText(e.Graphics, "aaa", e.CellStyle.Font, e.CellBounds, Color.Black, flags);
> DataGridViewPaintParts paintParts = e.PaintParts & ~DataGridViewPaintParts.ContentForeground;
> e.Paint(e.ClipBounds, paintParts);

テキストを描いた後で、e.Paintを呼び出していますが、ここで背景用の塗りつぶしも行われるので、先に描いたテキストが消えた(背景色で塗りつぶされた)のでしょう。
描画は順番が大切です。
引用返信 編集キー/
■86573 / inTopicNo.3)  Re[2]: CellPaintingイベントで文字が表示されない
□投稿者/ kiku (28回)-(2018/02/16(Fri) 10:20:12)
No86570 (Hongliang さん) に返信
> テキストを描いた後で、e.Paintを呼び出していますが、ここで背景用の塗りつぶしも行われるので、先に描いたテキストが消えた(背景色で塗りつぶされた)のでしょう。
> 描画は順番が大切です。

描画の順番を変えたところ、うまくいきました。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -