winform 在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级

描述

主页面中拖入一个FlowLayoutPanel控件,名称为mainLayoutPanel

程序运行后,子线程往mainLayoutPanel中添加其它控件不显示

mainLayoutPanel.Controls.Add(groupRootPanel);

通过调试发现,报“在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级”错误

解决方案

if (mainLayoutPanel.InvokeRequired)
{
    mainLayoutPanel.Invoke(new MethodInvoker(delegate
    {
        mainLayoutPanel.Controls.Add(groupRootPanel);
    }));
}
else
{
    mainLayoutPanel.Controls.Add(groupRootPanel);
}

 

posted @ 2024-07-25 15:59  chenjingchun  阅读(11)  评论(0编辑  收藏  举报