WinFormsアプリケーションにdatagridviewがあり、すべての列バー1を編集にロックしたい。これは、次のコードで実現できました。
foreach (DataGridViewColumn col in myGrid.Columns)
{
if (col.Name == "LockedColumn")
{
col.ReadOnly = false;
}
else
{
col.ReadOnly = true;
}
}
ただし、各行の他の場所の値に応じて、この列の条件付きロックも必要です。次のコードを試しました。
foreach (DataGridViewRow row in myGrid.Rows)
{
if ((bool)row.Cells["ConditionalColumn"].Value == false)
{
row.ReadOnly = false;
}
else
{
row.ReadOnly = true;
}
}
しかし、これはグリッド全体をロックしますが、これは私が望んでいることではありません。私が求めているのは、表の例でより明確になるかもしれません。
ColA ColB ColC
row1 true value1
row2 false value2
row3 true value3
列Aと列Bを完全にロック(読み取り専用)し、列Bの値がfalseの場合を除いて、列Cのデフォルトで編集できるようにします。したがって、上記の例では、value1とvalue3のみが編集可能です。
ただし、前述のように、読み取り専用をfalseに設定する条件で行をループすると、すべてがロックされるため、これを達成できないようです。