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

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

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

Re[4]: データグリッドビューの行の色を高速に描画したい


(過去ログ 94 を表示中)

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

■55495 / inTopicNo.1)  データグリッドビューの行の色を高速に描画したい
  
□投稿者/ 田中さん (11回)-(2010/12/03(Fri) 15:40:08)

分類:[C#] 

2010/12/03(Fri) 15:40:40 編集(投稿者)
こんちわ。C#でデータグリッドビューの行の色を変えようしています。
10行毎に色を変えたいと思ってます。
データが6000行程度あり、体感で明らかに色を塗るのに時間がかかってしまっています。

使っているコードは以下のコードですが、高速に描画する良い方法はありませんでしょうか?


□以下コード
private void indexDataGridView_Paint(object sender, PaintEventArgs e)
{
    //10データ毎に背景色を変更する
    DataGridViewCellStyle cellStyle = new DataGridViewCellStyle();

    cellStyle.BackColor = Color.Silver;
    for (int i = 0; i < indexDataGridView.Rows.Count; i++)
    {
        if ((i / 10) % 2 == 0)
        {
            indexDataGridView.Rows[i].DefaultCellStyle = cellStyle;
        }
    }
}

引用返信 編集キー/
■55496 / inTopicNo.2)  Re[1]: データグリッドビューの行の色を高速に描画したい
□投稿者/ Hongliang (743回)-(2010/12/03(Fri) 15:56:11)
Paint イベントでやってますか?
背景色の変更なら、CellPainting イベントで、イベント引数 DataGridViewCellPaintingEventArgs の CellStyle プロパティの、BackColor を変更することで実現できます。
引用返信 編集キー/
■55958 / inTopicNo.3)  Re[2]: データグリッドビューの行の色を高速に描画したい
□投稿者/ 田中さん (12回)-(2010/12/20(Mon) 21:23:17)
No55496 (Hongliang さん) に返信

返信が遅くなりました。すみません。

イベントをCellPaintingに変更したら、描画が高速になりました。
希望動作は出来ましたので解決なのですが、一つ、追加でお聞きします。

private void indexDataGridView_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
//列ヘッダーか調べる
if (e.ColumnIndex < 0 && e.RowIndex >= 0)
{
//セルの背景を描画する
if ((e.RowIndex / 10) % 2 == 0)
{
indexDataGridView.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Silver;
}
}
}

上記のようにして実装したら動作しましたのでこれで動かしていますが

> 背景色の変更なら、CellPainting イベントで、イベント引数 DataGridViewCellPaintingEventArgs の CellStyle プロパティの、BackColor を変更することで実現できます。
という所が気になってます。
上記という事なので、例えば以下のように

//セルの背景を描画する
if ((e.RowIndex / 10) % 2 == 0)
{
e.CellStyle.BackColor = Color.Black;
}

とすれば背景が変わってくれる事を期待したのですが、全く色がついてくれません。
色々なサンプルを探してみたのですが、これで色が変わらない理由が分かりません。
すみませんが、どこが間違っているのでしょうか?



引用返信 編集キー/
■55965 / inTopicNo.4)  Re[3]: データグリッドビューの行の色を高速に描画したい
□投稿者/ やじゅ (1793回)-(2010/12/20(Mon) 23:07:25)
やじゅ さんの Web サイト
No55958 (田中さん さん) に返信
> e.CellStyle.BackColor = Color.Black;
> とすれば背景が変わってくれる事を期待したのですが、全く色がついてくれません。

CellFormattingイベントで行えばいいのでは?
DataGridViewのセルの値によってセルスタイルを変更する
http://dobon.net/vb/dotnet/datagridview/cellformatting.html
引用返信 編集キー/
■55966 / inTopicNo.5)  Re[4]: データグリッドビューの行の色を高速に描画したい
□投稿者/ 田中さん (13回)-(2010/12/21(Tue) 01:17:20)
No55965 (やじゅ さん) に返信

ありがとうございます。
確かに、CellFormattingイベントで行えばサンプルにあるような事ができました。

思ったことが出来ましたので、質問を解決済みにしました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -