fc2ブログ

いつかはULTEGRA

自転車の事とかをメインかも、なんとなく色々

C# DataGridView、行の再描画を高速化する 

 


行の自動サイズ変更は外しておく
どうしても必要なら

直前に停止して処理後、再度適応
サイズ変更なしより多少時間はかかるが、しないよりは大分まし

dgvDataList .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;

実処理

dgvDataList .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;




遅い書き方(1行づつ追加)

private DataGridView dgvDataList = new DataGridView();

public void setRowCell(List DataList)
{
int idx = 0;
dgvDataList.Rows.Add();
idx = dgvDataList.Rows.Count - 1;

for (int i = 0; i < DataList.Count; i++)
{
dgvDataList.Rows[idx].Cells[0].Value = DataList[i].Data1;
dgvDataList.Rows[idx].Cells[1].Value = DataList[i].Data2;
dgvDataList.Rows[idx].Cells[2].Value = DataList[i].Data3;
if (i < (DataList.Count - 1))
{
dgvDataList.Rows.Add();
idx = DataList.Rows.Count - 1;
}
}
}

高速化の書き方(全行一気に追加)

private DataGridView dgvDataList = new DataGridView();

public void setRowCell(List DataList)
{
DataGridViewRow[] rows = new DataGridViewRow[DataList.Count];

for (int i = 0; i < DataList.Count; i++)
{
object[] cellValues = new object[]{
DataList[i].Data1,
DataList[i].Data2,
DataList[i].Data3,
};

DataGridViewRow row = new DataGridViewRow();
row.CreateCells(dgvDataList);
row.SetValues(cellValues);

rows[i] = row;
}
dgvDataList.Rows.AddRange(rows);
}
関連記事
スポンサーサイト



プログラム(備忘録)の関連記事

category: プログラム(備忘録)

tag: プログラム 
tb: 0   cm: 0

△top

コメント

 

△top

コメントの投稿

 

Secret

△top

トラックバック

 

トラックバックURL
→http://tora761.blog.fc2.com/tb.php/369-0358f7c9
この記事にトラックバックする(FC2ブログユーザー)

△top