如何在多线程中解决 DataGridView 无法显示滚动条的问题

 新葡亰计算机网络     |      2020-02-07

通过为 DataGridView 指定 DataSource 来填充数据,但是将其放在多线程中后,滚动条就消失了,还动不动就假死。

关于datagridview在多线程中滚动条无法使用的问题
private delegate void InvokeHandler();
//子线程中
this.Invoke(new InvokeHandler(delegate()
{
dataGridView1.DataSource = null;
dataGridView1.DataSource = dgv_dt;
}));
在网上查的到是这么解决的,但是我不知道该把代码贴在哪里,已经把datasource换成了自己的datatable值

解决办法需要两步

我的代码是这样的
try
{
Thread th = new Thread;
th.IsBackground = true;
th.Start();
dataGridViewOrderResult.Invoke(new InvokeHandler(delegate()
{
dataGridViewOrderResult.DataSource = null;
dataGridViewOrderResult.DataSource = this.dtMy;
}));
}//try
catch
{
MessageBox.Show;
}
这样贴进去没用为什么没用,贴到Allorder方法里也没用

一是使用 Invoke 将执行数据绑定的代码交回给主线程(因为 DataGridView 是主线程创建的);