在 MDI 的主窗体中,调用以下代码显示子窗体FrmSZBOB frmSZBOB = new FrmSZBOB();
frmSZBOB.MdiParent = this;
frmSZBOB.WindowState = FormWindowState.Maximized;
frmSZBOB.Show();报告如下错误:Controls created on one thread cannot be parented to a control on a different thread.
parameter name:value不知道该如何解决。
请帮忙

解决方案 »

  1.   

    在执行这段代码的时候,首先需要设置主窗体的IsMdiContainer属性为true。
      

  2.   

    FrmSZBOB frmSZBOB = new FrmSZBOB();
    frmSZBOB.MdiParent = this;
    frmSZBOB.WindowState = FormWindowState.Maximized;
    frmSZBOB.Show(); 代码没有问题 可能是你其他部分代码的问题
      

  3.   

    如果我没猜错的话,FrmSZBOB是从另一个窗体(比如form1)的实例对对像,现在又要为FrmSZBOB创建一个实例对像frmSZBOB,系统不允许这样做,如果你还要创建一个form1的实例,那么应该直接创建from1的一个对像,而不是FrmSZBOB的对像。将上面代码中的FrmSZBOB改成FrmSZBOB的父级窗体的名称,如果FrmSZBOB是form1的对像则是:form1 frmSZBOB = new form1();
    form1.MdiParent = this;
    form1.WindowState = FormWindowState.Maximized;
    fform1.Show();
      

  4.   

    报告如下错误:Controls created on one thread cannot be parented to a control on a different thread.
    parameter name:value在执行这段代码的时候,首先需要设置主窗体的IsMdiContainer属性为true。
      

  5.   

    楼主是在主窗体中,新开一个线程来打开这个mdi子窗体的吗?
      

  6.   

    不好意思,我上面的答案是错误的
    正确的答案应该是将FrmSZBOB窗体的IsMdiContainer属性设为true。
      

  7.   

    不是的我的是一个主窗体中嵌入了一个 COM 组件
    这个组件中间有一些的事件通知在事件响应的代码中,创建MDI子窗口,进行显示操作。
    这个时候就会出问题。而在工具栏的按钮的点击事件中,同样的代码显示子窗口,确不会出现问题。
      

  8.   

    jcyluck(C# + SQL 2005 QQ群:26096739) FrmSZBOB 是一个子窗体对象
      

  9.   

    UI 线程和COM 组件不是一个线程,你在COM线程里不能操纵UI的,我觉得你需要写一个回调函数,显示子窗口代码应该在UI线程立执行
    just try
      
    *****************************************************************************
    欢迎使用CSDN论坛阅读器 : CSDN Reader(附全部源代码) 
    http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  10.   

    你是在另一个线程里面打开子窗体出问题,可以试试用invoke调用打开窗体的代码,例如:
    private void button1_Click(object sender, System.EventArgs e)
    {
    System.Threading.Thread thd=new System.Threading.Thread(new System.Threading.ThreadStart(this.ThreadProc));
    thd.Start();
    }private void ThreadProc()
    {
    this.Invoke(new System.Threading.ThreadStart(this.ShowForm));
    }private void ShowForm()
    {
    Form f=new Form();
    f.MdiParent=this;
    f.Show();
    }
      

  11.   

    把frmSZBOB.MdiParent = this;这句改为:frmSZBOB.MdiParent = this.ParentForm; 看看!应该没有问题!
      

  12.   

    十分感谢 woyaomoney 和 Brunhild() 以及其它关注的朋友解决了确实应该用不同的线程来调用
      

  13.   

    JSIFENG() 你的方法可以不出现错误,但是显示子窗体不正确。