[英]How to avoid or restrict MDI Child Form menu strip getting merged with MDI Parent Form menu strip?
[英]close child mdi c# using main menu strip control on parent mdi
我正在Visual Studio 2010中使用MDI表单中的C#创建Windows表单应用程序。 我已经设法将子窗体连接到父mdi窗体上的相应菜单条控件,但是,我希望将这些子mdi窗体停靠在父mdi的大小上,并在使用另一个子mdi窗体打开时自动关闭它们另一个菜单条控件。
例如,我有一个名为Tile Model的菜单条项目,单击该菜单项会调用/打开特定的子窗体。 当我单击另一个菜单条项目(假设为“帐户”)时,“平铺模型”菜单项所调用的子窗体必须自动关闭,而“帐户”菜单条项所调用的子窗体将打开。
请注意,我已将窗体边框样式设置为“无”。
我现在所拥有的代码发生的事情是,每当打开子mdi表单并处于活动状态时,就会打开另一个子表单,这些小巧的表单就会重叠,看起来看起来很凌乱。
这里摘录自我的代码。
公共部分类Form1:表单{public Form1(){InitializeComponent(); }
private void manageTileModelToolStripMenuItem_Click(object sender, EventArgs e)
{
ManageTileModel ChildForm = new ManageTileModel();
ChildForm.MdiParent = this;
ChildForm.Show();
}
private void startInspectionToolStripMenuItem_Click(object sender, EventArgs e)
{
StartInspection ChildForm = new StartInspection();
ChildForm.MdiParent = this;
ChildForm.Show();
}
private void manageTestReportsToolStripMenuItem_Click(object sender, EventArgs e)
{
ManageTestReports ChildForm = new ManageTestReports();
ChildForm.MdiParent = this;
ChildForm.Show();
}
private void registerNewAccountToolStripMenuItem_Click(object sender, EventArgs e)
{
RegNewAccount ChildForm = new RegNewAccount();
ChildForm.MdiParent = this;
ChildForm.Show();
}
private void manageAccountsToolStripMenuItem_Click(object sender, EventArgs e)
{
ManageAccounts ChildForm = new ManageAccounts();
ChildForm.MdiParent = this;
ChildForm.Show();
}
private void inspectionToolStripMenuItem1_Click(object sender, EventArgs e)
{
GenHelpInspection ChildForm = new GenHelpInspection();
ChildForm.MdiParent = this;
ChildForm.Show();
}
private void tileModelToolStripMenuItem1_Click(object sender, EventArgs e)
{
GenHelpTileModel ChildForm = new GenHelpTileModel();
ChildForm.MdiParent = this;
ChildForm.Show();
}
private void accountsToolStripMenuItem1_Click(object sender, EventArgs e)
{
GenHelpAccounts ChildForm = new GenHelpAccounts();
ChildForm.MdiParent = this;
ChildForm.Show();
}
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
About ChildForm = new About();
ChildForm.MdiParent = this;
ChildForm.Show();
}
回复非常有帮助,我将非常感谢。:)谢谢。
如果只想显示一个MDI子项,那么如何使用私有字段存储最后显示的子项。 然后,您可以编写这样的方法:
private void HideLastChild() {
if(_lastChild != null)
_lastChild.Close();
}
并在ChildForm.Show()
之前调用它,当然,您还必须更新_lastChild
字段:
ChildForm.Show();
_lastChild = ChildForm;
您可以将所有显示操作合并为一个通用方法:
private void ShowChild<TWindow>() where TWindow: Form, new() {
var child = new TWindow();
HideLastChild();
_lastChild = child;
child.MDIParent = this;
child.Show();
}
ShowChild<About>();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.