为什么两个dgv上的数据同时发生变化?

时间:2017-02-26 23:05:43

标签: c# winforms

我在Windows窗体中有关于DGV的问题。所以我有dgv1在哪里写了一些信息。然后我用这段代码填充第二个dgv2:

dataGridView2.DataSource = dataGridView1.DataSource;

并且它工作正常,但是当我在dgv2中更改某些内容(删除行或列)时,它也会出现在dgv1上。我不明白为什么。我只是将数据从dgv1添加到dgv2中,我希望dgv1是如此(没有更改)。同时我想改变dgv2并查看差异(dgv1和dgv2之间)。

那么谁知道为什么会这样呢?

我用这段代码解决了它:

dataGridView2.Columns.Add("Column1", "Name");
dataGridView2.Columns.Add("Column2", "Date");
dataGridView2.Columns.Add("Column3", "Time");
DataGridViewRow row = new DataGridViewRow();

for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    row = (DataGridViewRow)dataGridView1.Rows[i].Clone();
    int intColIndex = 0;

    foreach (DataGridViewCell cell in dataGridView1.Rows[i].Cells)
    {
        row.Cells[intColIndex].Value = cell.Value;
        intColIndex++;
    }

    dataGridView2.Rows.Add(row);
}

dataGridView2.AllowUserToAddRows = false;
dataGridView2.Refresh();

1 个答案:

答案 0 :(得分:0)

简单:您对两个DataGridView使用完全相同的DataSource,而不是副本。

这意味着:如果您更改数据源中的任何内容,则使用它的所有DataGridView都会相应更新。您可能希望克隆数据源,然后再将其分配给第二个DataGridView