[英]Read Only Columns & Rows in a DataGridView
我在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
row1 true value1
row2 false value2
row3 true value3
我希望列A和B完全锁定(只读),并且Col C的默认值允许编辑,除非列B中的值为false。 因此,在上面的示例中,只有value1和value3可以编辑。
但是我似乎无法实现这一点,因为如上所述,如果我使用将readonly设置为false的条件循环遍历行,则所有内容都将被锁定。
您显示的代码不应该编译,也不能正确检查DataGridView
布尔单元格中的值。
如果您更改代码以将行查看为类似下面的代码,那么您应该能够根据列将单个行设置为只读:
foreach (DataGridViewRow row in myGrid.Rows)
{
if (row.Cells["ConditionalColumn"].Value == null || (bool)row.Cells["ConditionalColumn"].Value == false)
{
row.ReadOnly = false;
}
else
{
row.ReadOnly = true;
}
}
这是问题的下一行
row.ReadOnly = false;
当改为
row.Cells["colName"].ReadOnly = false;
它按预期工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.