日期:2014-05-18  浏览次数:21119 次

C# 多线程 动态添加UserControl
现在界面上有个Panel,我启动另外一个线程把我创建好的UserControl 要添加到这个Panel里面里面。我知道跨线程操作控件要用delegate 然后调用Panel 的Invoke 方法,我是把UserControl 添加到Panel里面了,但是UserControl 里面我拖到上面的控件也都全没有了。我找到好久,都没有找到原因,不知道网上有没有哪位高手可以解决这个问题啊?




------解决方案--------------------
添加之前先 SuspendLayout() 再添加,最后 ResumeLayout()
------解决方案--------------------
探讨
添加之前先 SuspendLayout() 再添加,最后 ResumeLayout()

------解决方案--------------------
3楼的代码修改如下
C# code

   if (panel.InvokeRequired)
                {
                     this.SuspendLayout();
                    AddUserControlHandler handler = new AddUserControlHandler(panel.Controls.Add);
                    object obj = panel.Invoke(handler, vehicleStop);
                    this.ResumeLayout();
                }
                else
                {
                    this.SuspendLayout();
                    panel.Controls.Add(vehicleStop);
                     this.ResumeLayout();
                 }

------解决方案--------------------
试试 control.Parent = panel?