最后我实现了一个容器来打开1个表单然后我注意到如果我转到其他表单,容器就会消失(可能会失去继承)。
用于在容器内打开单个表单的代码是:
LandingForm myForm = new LandingForm();
myForm.TopLevel = false;
myForm.AutoScroll = true;
panel1.Controls.Add(myForm);
myForm.Show();
有人可以帮助我如何让我的所有表格在我的容器内导航吗?
谢谢
答案 0 :(得分:0)
制作MDI WinForm应用程序
ParentForm
和ChildForm
使用此示例替换ParentForm
的代码:
public ParentForm()
{
InitializeComponent();
IsMdiContainer = true;
}
private void ParentForm_Load(object sender, EventArgs e)
{
new ChildForm {MdiParent = this}.Show();
}
在一个容器中打开多个表单
ParentForm
和ChildForm
使用此示例替换ParentForm
的代码:
public ParentForm()
{
InitializeComponent();
DoubleClick += ParentForm_DoubleClick;
}
private void ParentForm_DoubleClick(object sender, EventArgs eventArgs)
{
var child = new ChildForm
{
TopLevel = false,
AutoScroll = true
};
child.Location = new Point(
MousePosition.X - Location.X - child.Size.Width/2,
MousePosition.Y - Location.Y - child.Size.Height/2);
child.Click += Child_OnClick;
child.Closing += Child_OnClosing;
Controls.Add(child);
Controls.SetChildIndex(child, 0);
child.Show();
child.Activate();
}
private void Child_OnClosing(object sender, CancelEventArgs cancelEventArgs)
{
((ChildForm)sender).Click -= Child_OnClick;
((ChildForm)sender).Closing -= Child_OnClosing;
Controls.Remove((ChildForm)sender);
}
private void Child_OnClick(object sender, EventArgs eventArgs)
{
Controls.SetChildIndex((ChildForm)sender, 0);
((ChildForm)sender).Activate();
}
现在,您可以双击空白区域以添加新表单,也可以通过单击子表单的表面在它们之间切换。