3

我正在使用一个有一个孩子的 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();

但这也无济于事,而是引发了一个异常,即我尝试设置 Parent 的表单不是 MDI Container 然后我尝试并修改

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

结果什么都没有出现

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

4

4 回答 4

8

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

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

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

于 2010-12-11T20:34:59.977 回答
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属性。

于 2010-12-11T20:13:41.280 回答
0

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

childform  obj = new childform( );
               obj.MdiParent = this;
               obj.StartPosition = FormStartPosition.CenterScreen;
               obj.Show( );
于 2016-02-15T08:57:31.220 回答
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();
    }
}
于 2020-02-20T23:13:07.860 回答