避免MDI子窗体重复打开? 大侠: 如何 避免C# Winform MDI子窗体重复打开? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 foreach (Form childrenForm in Application.OpenForms) //判断窗体是否已经打开,如果打开则激活 { if (childrenForm.Name == "你窗体的名称") { childrenForm.Visible = true; childrenForm.Activate(); return; } } 你窗体 frm = new yhll_你窗体("", "", "F001", "0", "0"); frm.Show(); //没有打开,则实例化显示 你窗体 frm = new yhll_你窗体("", "", "F001", "0", "0"); ==>前面的yhll_ 请忽略 简单点的就是这样 private bool ShowChild(Form frm) { foreach (Form frm1 in this.MdiChildren) { if (frm1.Text==frm.Text) { frm1.WindowState = FormWindowState.Maximized; frm1.Show(); return true; } } return false; } 其实可以简单到这样: if (this.MdiChildren.OfType<Form2>().Count() > 0) { this.MdiChildren.OfType<Form2>().First().Activate(); } else { Form2 f2 = new Form2(); f2.MdiParent = this; f2.Show(); } 哈哈,其实还可以通过单例模式进一步简化 Form2 f2 = new Form2(); (这里不直接这样实例化,通过一个静态类创建单例的Form2) f2.MdiParent = this; f2.Show(); foreach (Form frm in this.MdiChildren) { if (frm.Name == "已打开的窗口名称或窗口名字") { ........ } } /// <summary> /// 判断窗体是否已打开 /// </summary> private bool IsChildFormExist(Form frm) { if (frm == null) return false; foreach (Form childFrm in this.MdiChildren) { //用子窗体的Name进行判断,如果存在则将他激活 if (childFrm.Text == frm.Text) { childFrm.Activate(); return true; } } return false; } /// <summary> /// 打开窗口 /// </summary> private void ShowForm(Form frm) { frm.MdiParent = this; frm.Show(); }调用事件里面:Form frm = null;if (!this.IsChildFormExist(this.frm)) { frm = new Form(); this.ShowForm(frm); } 菜鸟问题 如何在C#中调用winrar? js弹出页面的问题 真是见到鬼了。。。。。 电子邮件 怎样创建、修改、删除NTFS文件流 谁做过扫描啊,怎么做啊,急啊,我找组件也找到啊,什么组件啊 求项目标准文件示例。 计算字符个数 一段C#代码,能不能帮忙转成VB.NET的? 如何根据treeview选中的checkbox点击“查询”,便可在DatagridView中显示相关数据库表中的信息 xml序列化对象问题
foreach (Form childrenForm in Application.OpenForms) //判断窗体是否已经打开,如果打开则激活
{
if (childrenForm.Name == "你窗体的名称")
{
childrenForm.Visible = true;
childrenForm.Activate();
return;
}
}
你窗体 frm = new yhll_你窗体("", "", "F001", "0", "0");
frm.Show(); //没有打开,则实例化显示
==>
前面的yhll_ 请忽略
简单点的就是这样
private bool ShowChild(Form frm)
{
foreach (Form frm1 in this.MdiChildren)
{
if (frm1.Text==frm.Text)
{
frm1.WindowState = FormWindowState.Maximized;
frm1.Show();
return true;
}
}
return false;
}
{
this.MdiChildren.OfType<Form2>().First().Activate();
}
else
{
Form2 f2 = new Form2();
f2.MdiParent = this;
f2.Show();
}
Form2 f2 = new Form2(); (这里不直接这样实例化,通过一个静态类创建单例的Form2)
f2.MdiParent = this;
f2.Show();
{
if (frm.Name == "已打开的窗口名称或窗口名字")
{
........
}
}
/// 判断窗体是否已打开
/// </summary>
private bool IsChildFormExist(Form frm)
{
if (frm == null) return false;
foreach (Form childFrm in this.MdiChildren)
{
//用子窗体的Name进行判断,如果存在则将他激活
if (childFrm.Text == frm.Text)
{
childFrm.Activate();
return true;
}
}
return false;
} /// <summary>
/// 打开窗口
/// </summary>
private void ShowForm(Form frm)
{
frm.MdiParent = this;
frm.Show();
}调用事件里面:
Form frm = null;
if (!this.IsChildFormExist(this.frm))
{
frm = new Form();
this.ShowForm(frm);
}