C# 指定父MDI表单

C# 指定父MDI表单,c#,.net,winforms,mdi,C#,.net,Winforms,Mdi,在c中显示窗体时,我试图指定父MDI窗体# 所有的例子都建议只使用 FormVariable.Parent = this; 假设您希望表单始终从父窗口打开,则此操作正常 我希望能够通过指定名称打开窗体并将父窗体设置为我的MDI父窗体 在VB.net中我使用了 Me.MdiParent = TheNameOfMyParentForm 当我在c中尝试类似的东西时# 我明白了 “Crux.CruxMDI”是一个“类型”,但其用法类似于“变量” Form.mdipparent必须引用一个具体实例。因

在c中显示窗体时,我试图指定父MDI窗体#

所有的例子都建议只使用

FormVariable.Parent = this;
假设您希望表单始终从父窗口打开,则此操作正常

我希望能够通过指定名称打开窗体并将父窗体设置为我的MDI父窗体

在VB.net中我使用了

Me.MdiParent = TheNameOfMyParentForm
当我在c中尝试类似的东西时#

我明白了

“Crux.CruxMDI”是一个“类型”,但其用法类似于“变量”


Form.mdipparent
必须引用一个具体实例。因此,在父容器中实现一个单例模式(您可能不希望以任何方式允许多个父窗口,是吗?)可能是一个好主意,这样您就可以从任何需要的地方引用它。然后您只需键入:

this.MdiParent = CruxMDI.Instance;
如果您想自动添加此类行为,并且需要在应用程序中以多种形式发生,则可以在创建从窗体继承的自定义基类时考虑一个选项。这样,您只需指定一次,然后就可以确保从该基类而不是默认表单继承新表单


无论哪种方式,您都需要某种机制来引用MDI容器的实例。

CruxMDI
函数吗?如果不删除
()
。使用
this.MdiParent=TheNameOfMyParentForm时会发生什么情况?没有CruxMDI是父窗体。我错过了在邮局打字的机会。。应该没有()所以我尝试了这个;我得到了一个错误“Crux.CruxMDI”是一个“类型”,但它像一个“变量”一样使用。你肯定需要忘记vb.net实践,你不能在C#中需要对象名的地方替换类型名。如果此代码位于MDI客户端窗体内,则此.Parent将起作用。如果你绝望,你可以使用Application.OpenForms[0]。我不是绝望。。。我想把工作做好。我的父窗体名为CruxMDI,我始终希望子窗体是此父窗体的子窗体。谁能告诉我如何做到这一点,希望是最喜欢的方式。(即,它是在我用来打开表单的方法中,还是在表单加载事件中)
this.MdiParent = CruxMDI.Instance;