“已更改”,用于在另一个 DataGridView 存储上一个值中查找数据
本文关键字:上一个 存储 DataGridView 数据 查找 另一个 已更改 用于 | 更新日期: 2023-09-27 18:32:07
Using MS Visual Studio and C#.net 4.0.
因此,刚刚完成了我的程序的另一部分,该部分检查重复项,最终"非常感谢所有帮助"。 向我的老板展示了谁喜欢它,但随后问"如果他要选择显示带有重复值的部件号的数据网格视图的结果,那么是否可以突出显示等于所选结果的主数据网格视图"。
现在首先我明白他的意思,但措辞相当困难,因此寻找一些例子来让我开始是非常困难的。
现在,虽然我没有任何代码,但我可以显示我当前拥有的代码。
我做的第一件事是在数据网格上确定一个事件处理程序,它可以检测选择了哪一行,我将使用"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 是否有类似的方法来执行此操作?