動くコード図鑑技術記事現場の渡り方キャリア論すべての記事About
C#

定石5: DataBindingCompleteで行単位ReadOnlyを維持

出典: WinForms DataGridView の編集モード完全ガイド — ReadOnly / EditMode / RowValidating の使い分け定石5: DataBindingCompleteで行単位ReadOnlyを維持

定石5: DataBindingCompleteで行単位ReadOnlyを維持 (csharp)#644e739d514b
// ❌ NG: DataBound前にRows[i].ReadOnlyを設定(消える)
private void Form_Load(object sender, EventArgs e)
{
    dataGridView1.DataSource = LoadFromDb();
    dataGridView1.Rows[0].ReadOnly = true;   // ← DataBound完了前でRowsが空or再生成される
}
 
// ✅ OK: DataBindingCompleteイベントで設定
private void Form_Load(object sender, EventArgs e)
{
    dataGridView1.DataBindingComplete += DataGridView1_DataBindingComplete;
    dataGridView1.DataSource = LoadFromDb();
}
 
private void DataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        if (row.IsNewRow)continue;
 
        //業務ロジックで動的にReadOnlyを決める
        var status = row.Cells["status"].Value?.ToString();
        if (status == "確定済み")
        {
            row.ReadOnly = true;   //確定済みの行は編集不可
        }
    }
}
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
  • id: #644e739d514b
  • lines: 28
  • extracted: 2026-06-10

Source収録記事

この snippet は記事の「定石5: DataBindingCompleteで行単位ReadOnlyを維持」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。

同じ記事から

4
図鑑トップ