当前单元格不能设置为不可见单元格-不同的场景- DataGridView



我有2个DataGridView对象,每个对象都有相同的五列。dgv1有两个列的Visible属性设置为false。Dgv2的所有列都是可见的。如果我从dgv1中删除DataGridViewRow,然后使用dgv1.Rows.Remove(row)dgv2.Rows.Add(row)将其添加到dgv2,那么当我单击dgv2中不可见的一个单元格时,我得到错误:

"当前单元格不能设置为不可见单元格"

我可以检查row.Cells[index].Visible属性从dgv1删除DataGridViewRow后,看到两个特定单元格的可见属性设置为false,如预期的那样。然而,row.Cells[index].Visible属性是只读的,所以我不能在将行添加到dgv2之前将其更改为true。因此,当我将这个行对象添加到dgv2时,所有列都可见,我不知道如何防止每次单击隐藏在dgv1中但现在在dgv2中可见的一个单元格时发生上述错误。

有没有人知道如何解决这种情况,这可能是一个bug?

可能不是最干净的方法,但它可以满足您的需求。我不知道你删除一行的标准是什么,所以在我的例子中,我只是选择了一行(在我的例子中索引2),对于你的情况,它只是切换到你需要删除的行:

DataGridViewRow row = (DataGridViewRow)dataGridView1.Rows[2].Clone();
int pivot = 0;
foreach (DataGridViewCell item in dataGridView1.Rows[2].Cells)
{
    row.Cells[pivot].Value = item.Value;
    pivot++;
}
dataGridView1.Rows.Remove(dataGridView1.Rows[2]);
dataGridView2.Rows.Add(row);