C#
パターン③: BindingList / BindingSource 経由
出典: C# DataGridView 行追加の3パターン — Rows.Add / DataSource バインド / BindingList の使い分け — 最短対処: コピペで動く3つの行追加 / パターン③: BindingList / BindingSource 経由
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
}
// BindingSource を噛ませてバインド
var list = new BindingList<Employee>();
var source = new BindingSource { DataSource = list };
grid.DataSource = source;
// list に Add すると grid に即反映される
list.Add(new Employee { Id = 5, Name = "中村" });
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「最短対処: コピペで動く3つの行追加 / パターン③: BindingList / BindingSource 経由」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
4 件// 先に列を用意(非バインド) grid.Columns.Add("Id", "ID"); grid.Columns.Add("Name", "名前");未収録
パターン①: 非バインド時 — Rows.Add / Rows.Insert
#91b772042db9
// DataSource にバインド済みの DataTable を取り出して足す var dt = (DataTable)grid.DataSource; dt.Rows.Add(3, "高橋"); // grid に自動で反映される未収録
パターン②: DataTable バインド時 — ソース側に足す
#5c0d2c8be188
var dt = new DataTable(); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("Name", typeof(string));未収録
ハマり①: DataSource 設定済みで grid.Rows.Add → InvalidOperationException
#967f8e84addb
// AllowUserToAddRows = true(既定)のまま件数を数えると… int count = grid.Rows.Count; // データ3行でも「4」が返る(+新規入力行) // データ行だけ数えたい時は IsNewRow を除外する未収録
ハマり②: AllowUserToAddRows の新規入力行で件数が1ズレる
#84071369596f
