我在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();
答案 0 :(得分:0)
简单:您对两个DataGridView使用完全相同的DataSource,而不是副本。
这意味着:如果您更改数据源中的任何内容,则使用它的所有DataGridView都会相应更新。您可能希望克隆数据源,然后再将其分配给第二个DataGridView