gpt4 book ai didi

c# - 从其他线程添加 UserControl

转载 作者:行者123 更新时间:2023-11-30 19:44:28 25 4
gpt4 key购买 nike

我有我的用户控制权。我将这些用户控件(100 个或更多)的集合添加到面板中。而这个面板又被添加到主窗体中。所有这些都是在运行时完成的。由于有太多用户控件,在添加这些用户控件之前,我的主窗体会变得无响应。

我想知道我是否可以先将面板添加到窗体,然后从一个单独的线程创建我的用户控件并将它们添加到同一个面板,这样我的主窗体始终对用户可用。我所有的努力导致:

'cross-thread operation not valid' error.

如果有人能帮我解决这个问题,我会很高兴。

这是我现在正在做的事情

void main(){
MyPanel pnlObj = new MyPanel();
this.Controls.Add(pnlObj);
}

Class MyPanel{

public void Panel()
{
MyUserControl uc1 = new MyUserControl();
MyUserControl uc2 = new MyUserControl();
this.Add(uc1);
this.Add(uc2);
}
}

最佳答案

您不能在非 UI 线程中使用视觉元素,对此深表歉意。

但您可以做的是在非 UI 线程中创建所有必要的数据,并将创建 UI 元素和更新 UI 委托(delegate)给 UI 线程。

这看起来像这样:

// in background thread
ComputeDataSlowly();
MainForm.Invoke(() =>
{
var control = CreateNewControlFromData();
MainForm.Add(control);
});

关于c# - 从其他线程添加 UserControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12339778/

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