避免MDI子窗体重复打开?

jwdream2008 2012-12-10 01:46:13
大侠:
如何 避免C# Winform MDI子窗体重复打开?
...全文
228 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
exception92 2012-12-14
  • 打赏
  • 举报
回复
/// <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); }
foxwfb 2012-12-14
  • 打赏
  • 举报
回复
foreach (Form frm in this.MdiChildren) { if (frm.Name == "已打开的窗口名称或窗口名字") { ........ } }
nanoxue 2012-12-13
  • 打赏
  • 举报
回复
引用 5 楼 haukwong 的回复:
其实可以简单到这样:
C# code?12345678910 if (this.MdiChildren.OfType<Form2>().Count() > 0) { this.MdiChildren.OfType<Form2>().First().Activate(); } ……



很好用 谢咯
sw4419 2012-12-10
  • 打赏
  • 举报
回复
引用 5 楼 haukwong 的回复:
其实可以简单到这样: C# code?12345678910 if (this.MdiChildren.OfType<Form2>().Count() > 0) { this.MdiChildren.OfType<Form2>().First().Activate(); } ……
学习
hard_learner 2012-12-10
  • 打赏
  • 举报
回复
哈哈,其实还可以通过单例模式进一步简化 Form2 f2 = new Form2(); (这里不直接这样实例化,通过一个静态类创建单例的Form2) f2.MdiParent = this; f2.Show();
Hauk 2012-12-10
  • 打赏
  • 举报
回复
其实可以简单到这样:

            if (this.MdiChildren.OfType<Form2>().Count() > 0)
            {
                this.MdiChildren.OfType<Form2>().First().Activate();
            }
            else
            {
                Form2 f2 = new Form2();
                f2.MdiParent = this;
                f2.Show();
            }
  • 打赏
  • 举报
回复

简单点的就是这样
        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;
        
        }
csdn_风中雪狼 2012-12-10
  • 打赏
  • 举报
回复
你窗体 frm = new yhll_你窗体("", "", "F001", "0", "0"); ==> 前面的yhll_ 请忽略
csdn_风中雪狼 2012-12-10
  • 打赏
  • 举报
回复

 foreach (Form childrenForm in Application.OpenForms) //判断窗体是否已经打开,如果打开则激活
                {
                    if (childrenForm.Name == "你窗体的名称")
                    {
                        childrenForm.Visible = true;
                        childrenForm.Activate();
                        return;
                    }
                }
                你窗体 frm = new yhll_你窗体("", "", "F001", "0", "0");
                frm.Show(); //没有打开,则实例化显示
请叫我小码哥 2012-12-10
  • 打赏
  • 举报
回复
大侠:真心求解

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧