MDI父表单问题设置父

时间:2010-12-11 19:46:11

标签: c# visual-studio-2010 mdichild mdiparent

我正在使用一个有孩子的MDI父表单,当他们被这个父母调用时它们很好地显示出来并且我用来强化子表格

ChildForm child = new ChildForm();
child.IsMdiContainer= this;
child.Show();

从父控件调用它们时效果很好但是如果我从另一个不是父母形式的孩子的形式中调用它们那么它们不再是主要父母的孩子,一个明显的原因是当我强化它们时独立形式是我根本无法使用child.MDIParent = this;因为它倾向于使独立形式的父母,但我也尝试过

MDIParentForm form = new MDIParentForm 

ChildForm child = new ChildForm();
child.IsMdiContainer= form ;
child.Show();

但这也没有帮助而不是这个它抛出一个异常,我试图设置父的形式不是MDI容器然后到这个我试试并修改

MDIParentForm form = new MDIParentForm ;
form.IsMdiContainer= true;
ChildForm child = new ChildForm();
child.MDIParent = form ;
child.Show();

并且在其结果中没有出现

任何想法如何..........

4 个答案:

答案 0 :(得分:7)

要从另一个孩子创建一个孩子,只需这样写:

ChildForm sibling = new ChildForm();
sibling.MdiParent = this.MdiParent;
sibling.Show();

或者触发父母可以响应的自定义事件。

答案 1 :(得分:0)

您应该将Parent设置为已存在的mdiform,而不是创建一个新的。

如果已经没有mdiform的实例,您不仅应该创建表单的实例,还应该显示它。

var mdiForm = new MdiForm();
mdiForm.IsMdiContainer = true;
var childForm = new ChildForm();
childForm.MdiParent = mdiForm;
mdiForm.Show();
childForm.Show();

另请注意,我使用mdiForm.IsMdiContainer,AFAIK没有IsMdiParent属性。

答案 2 :(得分:0)

以父表格形式编写此代码....

childform  obj = new childform( );
               obj.MdiParent = this;
               obj.StartPosition = FormStartPosition.CenterScreen;
               obj.Show( );

答案 3 :(得分:0)

class MainClass
{
   public string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
   public void showWindow(Form openWin, Form closeWin, Form MDI)
    {
        closeWin.Close();
        openWin.WindowState = FormWindowState.Minimized;
        openWin.MdiParent = MDI;
        openWin.Show();
    }
}