避免MDI子窗体重复打开?

jwdream2008 2012-12-10 01:46:13
大侠:
如何 避免C# Winform MDI子窗体重复打开?
...全文
169 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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;
        
        }
回复
你窗体 frm = new yhll_你窗体("", "", "F001", "0", "0"); ==> 前面的yhll_ 请忽略
回复

 foreach (Form childrenForm in Application.OpenForms) //判断窗体是否已经打开,如果打开则激活
                {
                    if (childrenForm.Name == "你窗体的名称")
                    {
                        childrenForm.Visible = true;
                        childrenForm.Activate();
                        return;
                    }
                }
                你窗体 frm = new yhll_你窗体("", "", "F001", "0", "0");
                frm.Show(); //没有打开,则实例化显示
回复
大侠:真心求解
回复
相关推荐
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2012-12-10 01:46
社区公告

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