Dan*_*aHa 4 c# multithreading scroll datagridview winforms
我将数据表设置为数据网格视图的数据源。我在一个新线程上执行此操作(我不希望我的 UI 在加载数据时被阻塞)。我的困境是:线程完成后滚动条不起作用。我尝试在加载数据之前设置 Scrollbars.None,然后设置 Scrollbars.Both。还尝试了刷新。但只帮助我显示滚动条,这些仍然没有工作。
如果我在我的主体中使用相同的代码,它可以完美运行。
那么我该怎么做才能让它发挥作用呢?
我的代码:
private void PressKey(object sender, KeyPressEventArgs e)
{
var process = new Thread(this.LoadData);
process.Start();
}
private void LoadData()
{
CheckForIllegalCrossThreadCalls = false;
this.dgv.ScrollBars = ScrollBars.None;
this.dgv.Columns.Clear();
this.dgv.DataSource = MyDataTable;
this.dgv.ScrollBars = ScrollBars.Both;
}
Run Code Online (Sandbox Code Playgroud)
好的,我终于明白了。我在我的线程中使用了 MethodInvoker。它允许我在 UI 线程上运行并更新控件:
private void LoadData()
{
CheckForIllegalCrossThreadCalls = false;
this.dgv.Columns.Clear();
this.dgv.DataSource = MyDataTable;
this.Invoke((MethodInvoker)delegate
{
dgv.ScrollBars = ScrollBars.Both; // runs on UI thread
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4010 次 |
| 最近记录: |