[英]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.