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

时间:2014-07-18 22:13:24

标签: c# .net winforms datagridview

我有两个DataGridView对象,每个对象有五列。 dgv1有两列'Visible属性设置为false。 dgv2显示所有列。如果我从dgv1中删除DataGridViewRow,然后使用dgv1.Rows.Remove(row)dgv2.Rows.Add(row)将其添加到dgv2,那么当我点击dgv2中dgv1中不可见的其中一个单元格时,我收到错误:< / p>

  

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

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

有谁知道如何解决这种情况,这可能是一个错误?

1 个答案:

答案 0 :(得分:0)

也许不是最干净的方式,但它完成了你需要的工作。我不知道你删除行的标准是什么,所以在我的例子中我只选了一行(在我的例子中为索引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);