準備
(なし)
デザイン
1. フォーム (Form1) にボタン (button1) を配置します。
2. フォーム (Form1) にデータグリッドビュー (dataGridView1) を配置します。
サンプルコード (C#)
// 名前空間の追加 // (なし) // コード private void Form1_Load(object sender, EventArgs e) { dataGridView1.ColumnCount = 2; dataGridView1.Rows.Add(new string[] { "A001", "Apple" }); dataGridView1.Rows.Add(new string[] { "B001", "Orange" }); dataGridView1.Rows.Add(new string[] { "C001", "Grape" }); dataGridView1.Rows.Add(new string[] { "D001", "Banana" }); dataGridView1.Rows.Add(new string[] { "E001", "Lemon" }); } private void button1_Click(object sender, EventArgs e) { Cell_Lock(dataGridView1, 0); } private void Cell_Lock(DataGridView dgvTarget, int iColPos) { var rows = dgvTarget.Rows.Cast<DataGridViewRow>().AsEnumerable(). Where(row => (row.Cells[iColPos].Value ?? "").ToString().Trim() != ""); foreach (DataGridViewRow row in rows) { row.Cells[iColPos].ReadOnly = true; row.Cells[iColPos].Style.ForeColor = Color.Gray; } }
解説
データグリッドビューの行データを IEnumerable 型に変換します。その際、未入力のセルは対象外とします。新規追加業は入力可能となっています。
結果
動作確認環境
Visual Studio 2015 Professional (C# 6.0)