C# 所选更改用于在另一个datagridview存储以前的值中查找数据

C# 所选更改用于在另一个datagridview存储以前的值中查找数据,c#,winforms,datagridview,C#,Winforms,Datagridview,使用MS Visual Studio和C.net 4.0 所以,我刚刚完成了我程序的另一部分,检查重复项,多亏了所有的帮助,它终于起作用了。向我的上司展示了他喜欢的结果,但问他是否要选择datagridview的结果,该结果显示具有重复值的零件号,然后是否可以突出显示与所选结果相同的maindatagridview 首先,我明白他的意思,但用词很难,因此,寻找一些例子让我开始学习是非常困难的 现在,虽然我没有任何代码,但我可以显示我当前拥有的代码 我做的第一件事是在datagrid上识别一个事件

使用MS Visual Studio和C.net 4.0

所以,我刚刚完成了我程序的另一部分,检查重复项,多亏了所有的帮助,它终于起作用了。向我的上司展示了他喜欢的结果,但问他是否要选择datagridview的结果,该结果显示具有重复值的零件号,然后是否可以突出显示与所选结果相同的maindatagridview

首先,我明白他的意思,但用词很难,因此,寻找一些例子让我开始学习是非常困难的

现在,虽然我没有任何代码,但我可以显示我当前拥有的代码

我做的第一件事是在datagrid上识别一个事件处理程序,它可以检测所选的行,我将使用selectionchanged

更新::好的,我想我会告诉你我重复使用代码的意思。 请注意,代码非常相似,但只是一个起点,我可以将以前的方法与新方法结合起来

private void MyErrorGrid_SelectionChanged(object sender, EventArgs e)
    {

        string getPartSelected;
        getPartSelected = MyErrorGrid.CurrentCell.Value.ToString();


        foreach (DataGridViewRow row in ParetoGrid.Rows)
        {
            var cellValue = row.Cells["Keycode"].Value;
            if (cellValue != null && cellValue.ToString() == getPartSelected)
            {
                ParetoGrid.Rows[row.Index].DefaultCellStyle.BackColor = Color.Red;
            }
        }

    }
正如你所见,这是可行的,但也存在一些问题。它高亮显示,但不取消高亮显示,因此我想我需要存储以前选择的?我不确定这是最好的方式


还需要添加导航,因为高亮显示对用户来说不够好。目前,我添加了selected=true,但当选择发生变化时,我需要使用上一个值。

好的,这感觉像是在作弊,但下面是我为解决问题所做的

private void MyErrorGrid_SelectionChanged(object sender, EventArgs e)
    {

        string getPartSelected;

        getPartSelected = MyErrorGrid.CurrentCell.Value.ToString();

        foreach(DataGridViewRow allrow in ParetoGrid.Rows)
        {
            ParetoGrid.Rows[allrow.Index].DefaultCellStyle.BackColor = Color.Empty;
            ParetoGrid.Rows[allrow.Index].Selected = false;
        }
        //might need a do while
        foreach (DataGridViewRow row in ParetoGrid.Rows)
        {
            var cellValue = row.Cells["Keycode"].Value;

            if (cellValue != null && cellValue.ToString() == getPartSelected)
            {
                ParetoGrid.Rows[row.Index].DefaultCellStyle.BackColor = Color.Red;
                ParetoGrid.Rows[row.Index].Selected = true;


            }
        }

    }
如您所见,它基本上在输入下一个更改之前清除所有内容,因此它可以工作,但不使用以前的值。 如果有人有更好的解决方案,请随时回答

唯一的问题是当有很多行时,虽然它选择并高亮显示它不滚动datagridview,但有类似的方法来执行此操作吗