我在 WinForms 应用程序中有一个 datagridview,我希望所有列栏都被锁定以进行编辑。我可以使用以下代码实现这一点:
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
第 1 行真值 1
第 2 行假值 2
第 3 行真值 3
我希望 A 列和 B 列全部锁定(只读),并且 Col C 的默认值允许编辑,除非 B 列中的值为 false。因此,在上面的示例中,只有 value1 和 value3 是可编辑的。
但是我似乎无法实现这一点,因为如上所述,如果我循环遍历具有将 readonly 设置为 false 的条件的行,则所有内容都被锁定。