C#
ハマり②: AllowUserToAddRows の新規入力行で件数が1ズレる
出典: C# DataGridView 行追加の3パターン — Rows.Add / DataSource バインド / BindingList の使い分け — ハマりポイント: 知らないと一晩飛ぶやつ / ハマり②: AllowUserToAddRows の新規入力行で件数が1ズレる
// AllowUserToAddRows = true(既定)のまま件数を数えると…
int count = grid.Rows.Count; // データ3行でも「4」が返る(+新規入力行)
// データ行だけ数えたい時は IsNewRow を除外する
int real = grid.Rows.Cast<DataGridViewRow>().Count(r => !r.IsNewRow);
// そもそも入力行が要らない画面なら、最初にオフにしておく
grid.AllowUserToAddRows = false;
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「ハマりポイント: 知らないと一晩飛ぶやつ / ハマり②: AllowUserToAddRows の新規入力行で件数が1ズレる」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
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
public class Employee { public int Id { get; set; } public string Name { get; set; }未収録
パターン③: BindingList / BindingSource 経由
#9954c7301854
var dt = new DataTable(); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("Name", typeof(string));未収録
ハマり①: DataSource 設定済みで grid.Rows.Add → InvalidOperationException
#967f8e84addb
