我遇到的情况是,用了一个线程,再线程中进行更新DataGridView中的数据,以及提示内容,线程处理结束后,滚动条无法滚动,而且会变黑。
如果你使用了Control.CheckForIllegalCrossThreadCalls = false;这句话也是不管用的。
解决方法:
1.在该Form中增加代理:private delegate void InvokeHandler();
Thread_TongBu = new Thread(TongBu_data_New);
Thread_TongBu.IsBackground = true;
然后,在线程的处理方法 TongBu_data_New中,凡是与DataGridView有关的更新都这样写:
this.Invoke(new InvokeHandler(delegate ()
{
//你的逻辑
}));
这样就可以完美解决了
本文介绍了一种在多线程环境下更新DataGridView的解决方案。当从非UI线程尝试更新DataGridView时,可能会遇到滚动条失效及显示异常的问题。通过在Form中引入代理,并使用Invoke方法,可以确保所有与DataGridView相关的操作都在主线程中执行,从而避免此类问题。





