【发布时间】:2014-08-02 19:48:40
【问题描述】:
我想让一个面板包含一个 MDI 表单。我想将MainWin 放入另一个桌面应用程序形式的面板(progPanel)中。我用过这个C# Panel As MDI Container
如果没有 MDI,我无法重新编码 MainWin,因为这将花费很长时间,而且我会失去一些功能。
Canvas.MainWin canvasForm = new Canvas.MainWin();
MdiClientPanel mdiClientPan = new MdiClientPanel();
canvasForm.MdiParent = mdiClientPan.MdiForm;
progPanel.Controls.Add(mdiClientPan);
public class MdiClientPanel : Panel
{
private Form mdiForm;
private MdiClient ctlClient = new MdiClient();
public MdiClientPanel()
{
base.Controls.Add(this.ctlClient);
}
public Form MdiForm
{
get
{
if (this.mdiForm == null)
{
this.mdiForm = new Form();
//set the hidden ctlClient field which is used to determine if the form is an MDI form
System.Reflection.FieldInfo field = typeof(Form).GetField("ctlClient", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
field.SetValue(this.mdiForm, this.ctlClient);
}
return this.mdiForm;
}
}
}
我在canvasForm.MdiParent = mdiClientPan.MdiForm; 在线收到错误Form cannot be both an MDI child and MDI parent。我尝试使用DesktopApp.ActiveForm.MdiParent 并将MdiClientPanel 中的Form 更改为Canvas.MainWin,但没有任何效果。有什么建议吗?
【问题讨论】: