【问题标题】:Why data on both dgvs are changing at the same time? [duplicate]为什么两个 dgv 上的数据同时发生变化? [复制]
【发布时间】:2017-07-17 10:52:09
【问题描述】:

我对 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();

【问题讨论】:

标签: c# winforms


【解决方案1】:

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

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

【讨论】:

  • 但是Datasource没有“Clone()”功能。我是否必须使用 "for(int i = 0; i
  • 我已经用这个代码解决了:
猜你喜欢
  • 1970-01-01
  • 2014-03-25
  • 2019-07-27
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 2021-10-07
  • 1970-01-01
相关资源
最近更新 更多