如题,在datagridview里面已经进行某个操作后对数据行进行了颜色分类,但是进行了筛选后已经设定的颜色又变成默认的白底黑字,怎么能保留颜色的设定啊?private void TSB_Material_Click(object sender, EventArgs e) 
{
....
this.DGV_Materials.Rows[index].DefaultCellStyle.BackColor = Color.YellowGreen;
...
}
这个时候datagridview的行的颜色都是绿色的private void DGV_ProductOrders_SelectionChanged(object sender, EventArgs e)
{
...
  ((DataView)this.DGV_Materials.DataSource).RowFilter = "ItemdID = 1";
...
}
这个时候筛选出来的行的颜色又变成白底黑字了,要怎么保留前面我已经设置好的颜色设定呢,让其在筛选后也能按照前面的设定颜色进行显示!

解决方案 »

  1.   

    你那是单击时改变的颜色,你要在DGV_ProductOrders_SelectionChanged()
    事件里面重新this.DGV_Materials.Rows[index].DefaultCellStyle.BackColor = Color.YellowGreen; 
    一次
      

  2.   

    不对,可能我没叙述清楚,我把问题简单化。
    程序有两个datagrid:定义为DGV1和DGV2DGV1和DGV2是有关联的,譬如说DGV1是产品名,DGV2是所有产品属性ok,DGV2我通过某个方法把他按照不同的产品属性设置了不同的颜色然后我现在通过点击DGV1中的一个产品,目的是想显示出只是这个产品的产品属性,而且这些属性显示的颜色是根据刚才那个方法已经设置好的问题是我现在按照产品名筛选后产品属性的颜色又恢复成了默认的白底黑字。请教该怎么处理呢?
      

  3.   

    写在CellFormatting事件里.
    可以在DataGridView里加一个隐藏列,记录该行的颜色,再在CellFormatting事件里根据该列的值设定颜色
      

  4.   

    是的,已解决,使用的就是CellFormatting事件