簡體   English   中英

DataGridView中的只讀列和行

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM