【问题标题】:current cell cannot be set to an invisible cell - different scenario - DataGridView当前单元格不能设置为不可见单元格 - 不同的场景 - DataGridView
【发布时间】:2014-09-10 03:44:29
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# .net winforms datagridview


    【解决方案1】:

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

    【讨论】:

    • 确实,看起来应该可以。当我有时间更新我的代码时,我会稍后报告。谢谢你的主意。似乎很不幸,它必须涉及创建一个新的行对象,但实际上我不确定还有其他方法。
    猜你喜欢
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    相关资源
    最近更新 更多