在DataGridView中,当添加新行时,将列的ReadOnly属性变为false,更新为true (c#.net)

本文关键字:更新 false true net 属性 ReadOnly DataGridView 添加 新行时 | 更新日期: 2023-09-27 18:11:58

我设置了两个数据表列的只读属性为true。

    List.Columns[0].ReadOnly = true;
    List.Columns[1].ReadOnly = true;

但我只希望它们是只读的,只有当用户试图更新,用户可以添加新行到dataGridView,所以我想把只读属性为false时,尝试添加新行。我尝试在数据网格的CellDoubleClick事件上这样做,但它不会做任何事情,因为它太晚了,无法调用beginedit。

if(e.RowIndex == GridView.Rows.Count-1)
                GridView.Rows[e.RowIndex].Cells[1].ReadOnly = GridView.Rows[e.RowIndex].Cells[0].ReadOnly = false;
            else
                GridView.Rows[e.RowIndex].Cells[1].ReadOnly = GridView.Rows[e.RowIndex].Cells[0].ReadOnly = true;

任何想法

在DataGridView中,当添加新行时,将列的ReadOnly属性变为false,更新为true (c#.net)

您必须使用cellbegin编辑器将单元格只读属性设置为true.

   private  void dataGridView1_CellBeginEdit(object sender,DataGridViewCellCancelEventArgs e)
   {
       if (dataGridView1.Columns[e.ColumnIndex].Name == "ColName0")
       {
           // you can check whether the read only property of that cell is false or not
       }
   }

听起来您想要做的是使网格中的所有行只读,除非它们是新行,因此意味着不能编辑创建的行。如果这是正确的,那么你可以做的是在DataBindingComplete事件期间将该行设置为只读,如下所示:

dataGridView1.DataBindingComplete += new DataGridViewBindingCompleteEventHandler(dataGridView1_DataBindingComplete);
void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    foreach (DataGridViewRow item in dataGridView1.Rows)
    {
        if (!item.IsNewRow)
            item.ReadOnly = true; 
    }
}

重要的部分是检查该行是否为新行