gpt4 book ai didi

c# - DataGridView ScrollBars 在 Thread 之后不工作

转载 作者:行者123 更新时间:2023-11-30 20:42:37 24 4
gpt4 key购买 nike

我正在将 dataTable 设置为 datagridview 的数据源。我在一个新线程上执行此操作(我不希望我的 UI 在加载数据时被阻塞)。我的困境是:线程完成后滚动条不工作。我尝试在加载数据之前设置 Scrollbars.None,然后设置 Scrollbars.Both。还尝试刷新。但只帮助我显示滚动条,这些仍然没有用。

如果我在我的委托(delegate)人中使用相同的代码,thread 它可以完美地工作。

那么我该怎么做才能让它发挥作用呢?

我的代码:

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;
}

最佳答案

好吧,我终于明白了。我在线程中使用了 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
});

}

关于c# - DataGridView ScrollBars 在 Thread 之后不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31209841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com