当前位置 : 主页 > 编程语言 > c语言 >

VB / C#.net使用后台工作程序动态添加控件项

来源:互联网 收集:自由互联 发布时间:2021-06-24
我正在创建一个 Windows窗体应用程序,它根据从数据库中提取的数据动态创建控件. 我在背景中运行的代码很好,它从数据库加载数据并将其应用于变量,我遇到的问题是当尝试使用这些数据
我正在创建一个 Windows窗体应用程序,它根据从数据库中提取的数据动态创建控件.

我在背景中运行的代码很好,它从数据库加载数据并将其应用于变量,我遇到的问题是当尝试使用这些数据创建控件时,我得到一个多线程错误(附加信息:Cross -thread operation无效:控制从其创建的线程以外的线程访问的’flowpanelMenuRules’.)

我正在使用BackgroundWorker_DoWork事件,失败的代码如下:

Me.flowpanelMenuRules.Controls.Add(PanelRule(i))

之前的代码是一个简单的循环,通过变量(从数据库中提取)并收集信息.

有没有人有安全调用上述线路的经验?我似乎无法让它完全工作:(

感谢您的帮助,如果需要,我可以发布更多代码.

我的建议是让BackgroundWorker只创建控件,但不要将它们添加到表单中.而是通过RunWorkerCompleted事件将准备好的控件返回到调用/ UI线程.然后在此时将控件添加到表单中,可能与SuspendLayout()/ ResumeLayout()方法一起使用.
网友评论