0
CurrencyManager cm=(CurrencyManager)BindingContext[bindingsource1.Datasource];

 foreach(DataGridviewRow dr in datagridview1.Rows)
{
 datagridview1.SuspendLayout();

  if(dr.Cells[0].Value.Tostring()=="Somevalue")
  {
    dr.Visible=True;
   }
   else
    {
      cm.SuspendBinding();
      dr.Visible=false;
      cm.ResumeBinding();
        }
}

这段代码运行良好,但执行它需要很多时间。有什么办法可以加快这个操作???有什么解决办法吗。。

提前致谢

4

1 回答 1

0

我认为这可以完成工作并且应该更快地工作:

datagridview1.SuspendLayout();

foreach(DataGridviewRow dr in datagridview1.Rows)
{
   dr.Visible = dr.Cells[0].Value.ToString() == "Somevalue";
}

datagridview1.ResumeLayout();

由于您只修改行可见性​​,因此无需保留绑定上下文。在循环之前暂停一次布局并在之后恢复它。

于 2013-05-28T05:29:40.410 回答