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

わんくま同盟

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

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

ツリー一括表示

DataGridViewのRowTemplateがきかない /すず (17/03/20(Mon) 05:14) #83379
Re[1]: DataGridViewのRowTemplateがきかない /Hongliang (17/03/20(Mon) 15:09) #83386
  └ Re[2]: DataGridViewのRowTemplateがきかない /はる (17/03/20(Mon) 19:58) #83388 解決済み


親記事 / ▼[ 83386 ]
■83379 / 親階層)  DataGridViewのRowTemplateがきかない
□投稿者/ すず (1回)-(2017/03/20(Mon) 05:14:11)

分類:[C#] 

お世話になります。

DataGridViewのRowTemplateが有効にならない事象で困っています。
以下のソースでAddメソッドで行を追加した場合有効になりますが、
AddRangeメソッドで行追加した場合有効になりません。

AddRangeでも有効にする場合はどうすればよいでしょうか?

■ソース
// FormにDataGridView(dgv)がある。
// 列追加
for (int i = 0; i < 3; i++)
{
dgv.Columns.Add("col" + i, "col" + i);
}

// RowTemplateの指定
dgv.RowTemplate.Height = 100;

// 1.Addによる行追加
// →RowTemplateは有効となる。
//dgv.Rows.Add();
//dgv.Rows.Add();
//dgv.Rows.Add();

// 2.AddRangeによる行追加
// →RowTemplateは有効にならない。
//DataGridViewRow r1 = new DataGridViewRow();
//r1.CreateCells(dgv);
//r1.SetValues(new object[] { "111", "222", "333" });
//DataGridViewRow r2 = new DataGridViewRow();
//r2.CreateCells(dgv);
//r2.SetValues(new object[] { "444", "555", "666" });
//this.dgv.Rows.AddRange(new DataGridViewRow[] { r1, r2 });

# バインドを・・・って話なんですけど既にAddRangeで作成されていますので変更は出来ません。。。

[ □ Tree ] 返信 編集キー/

▲[ 83379 ] / ▼[ 83388 ]
■83386 / 1階層)  Re[1]: DataGridViewのRowTemplateがきかない
□投稿者/ Hongliang (513回)-(2017/03/20(Mon) 15:09:52)
new DataGridViewRow()の代わりに、dgv.RowTemplate.Clone()するようにすればいいんでは。
[ 親 83379 / □ Tree ] 返信 編集キー/

▲[ 83386 ] / 返信無し
■83388 / 2階層)  Re[2]: DataGridViewのRowTemplateがきかない
□投稿者/ はる (1回)-(2017/03/20(Mon) 19:58:53)
Hongliang さん

ありがとうございました。
教えていただいた内容でいけました。


DataGridViewRow r1 = (DataGridViewRow)dgv.RowTemplate.Clone();
r1.CreateCells(dgv);
r1.SetValues(new object[] { "111", "222", "333" });
DataGridViewRow r2 = (DataGridViewRow)dgv.RowTemplate.Clone();
r2.CreateCells(dgv);
r2.SetValues(new object[] { "444", "555", "666" });
this.dgv.Rows.AddRange(new DataGridViewRow[] { r1, r2 });
解決済み
[ 親 83379 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -