[英]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.