C# 比较C中的两个datagridview

C# 比较C中的两个datagridview,c#,winforms,datagrid,C#,Winforms,Datagrid,我使用的是win表单,我有两个DataGridView,其中包含键和值单元格以及两个文本框。 我希望datagrids做一个比较工作,检查第一个datagrid的值是否与另一个完全相同。 每次客户端在网格中更改其选择时,都会在另一个网格中选择相同的键。 文本框用于查看每个关键点选择的完整值 我的代码是这样做的,但索引号,所以如果我有相同的键在2个网格,但在不同的顺序,它没有;t显示正确的行 private void dgvSource_SelectionChanged(object sender

我使用的是win表单,我有两个DataGridView,其中包含键和值单元格以及两个文本框。 我希望datagrids做一个比较工作,检查第一个datagrid的值是否与另一个完全相同。 每次客户端在网格中更改其选择时,都会在另一个网格中选择相同的键。 文本框用于查看每个关键点选择的完整值

我的代码是这样做的,但索引号,所以如果我有相同的键在2个网格,但在不同的顺序,它没有;t显示正确的行

private void dgvSource_SelectionChanged(object sender, EventArgs e)
{
    if (dgvSource.CurrentRow.Index >= 0 && dgvTemplate.Rows.Count > 0)
    {
        try
        {
            dgvTemplate.Rows[dgvSource.CurrentRow.Index].Selected = true;
            rtbTemplateValue.Text = dgvTemplate.Rows[dgvSource.CurrentRow.Index].Cells[1].Value.ToString();
        }
        catch (Exception)
        {
            rtbTemplateValue.Text = "";
        }

        rtbSourceValue.Text = dgvSource.CurrentRow.Cells[1].Value.ToString();
    }
}

private void dgvTemplate_SelectionChanged(object sender, EventArgs e)
{
    if (dgvTemplate.Rows.Count > 0)
        rtbTemplateValue.Text = dgvTemplate.CurrentRow.Cells[1].Value.ToString();
}

此外,在我的应用程序上进行快速QA时,我发现有时我有一些来自第一个GRI的密钥,这些密钥在加载数据后将不存在于第二个网格中。我也需要解决这个问题。

您需要检查索引/选择,而不是使用gridview,而是使用gridview用来显示数据的dataview。对不起,我不明白您想说什么。你能给我举个例子吗?你正在努力通过网格工作。这是一个错误。在您的网格后面有[可能]dataTable。当您说[abstractly]grid.selectedRowIndex时,此索引可能与DataTable中的行不同,因为网格是通过DataView工作的。DataTable.DefaultView,除非您指定了自己的。因此,请使用DataView索引系统,而不是表,而不是网格。您需要仔细阅读数据视图