[英]unable to bring mdi child form in front
我有一個MDI Parent表單,我在其中打開MDI Child表單,但我不想重新打開它們,如果我點擊另一次,而不是我想專注於已經打開的特定mdi子表單,我是通過單擊我的菜單條來完成這項工作。 我已經成功地嘗試了很多,但總是失敗了。 我的代碼是:
這是一個方法......
private bool CheckMdiClientDuplicates(string WndCls)
{
Form[] mdichld = this.MdiChildren;
if (this.MdiChildren.Length == 0)
{
return true;
}
foreach (Form selfm in mdichld)
{
string str = selfm.Name;
str = str.IndexOf(WndCls).ToString();
if (str != "-1")
{
return true;
}
}
return false;
}
我正在通過......實施這個方法
private void myToolStripMenuItem_Click(object sender, EventArgs e)
{
MyForm f = new MyForm();//MyForm is the form on which i am working
if (CheckMdiClientDuplicates("MyNamespace.MyForm") == true)
{
f.MdiParent = this;
f.Show();
}
else
{
f.Activate();
f.BringToFront();
}
}
f
仍然是你的new MyForm()
,那么你期望Activate
它會做什么? 您需要獲得想要帶到前面的實際表單並Activate
它。
此外,除非您打算使用它,否則您可能不想創建新的MyForm
。
你應該試試這個代碼:
這是當您單擊第一個表單的按鈕時:
private void button1_click(object sender, EventArgs e){
Form1 f1 = null;
if (IsFormAlreadyOpen(typeof(Form1)) == null)
{
if (ActiveMdiChild != null)
{
ActiveMdiChild.Close();
}
f1 = new Form1();
f1.MdiParent = this;
f1.Show();
}
}
方法:
public static Form IsFormAlreadyOpen(Type FormType)
{
foreach (Form OpenForm in Application.OpenForms)
{
if (OpenForm.GetType() == FormType)
return OpenForm;
}
return null;
}
單擊其他表單的下一個按鈕時,請執行相同操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.