如何使MDI子窗体不重复被打开

原创 2006年06月21日 13:22:00

有很多朋友希望MDI子窗体不重复被打开,如果子窗体已经被创建了,则把它激活,而不是又创建了一个MDI子窗体,其实中C#提供的MdiChildren这个属性就可以解决这个问题,下面假设一个treeview控件,点击treeview上面的相应结点,就会创建以这个结点命名的MDI子窗体,若是子窗体已经被创建,则把它激活,显示在所有子窗体的最前面。代码如下:

private void treeView_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)

{

    System.String str = treeView.SelectedNode.Text;//取得相应treeview结点的text值

    bool remark=true;

    for(int i=0; i<this.MdiChildren.Length;i++)

    if(this.MdiChildren[i].Name.Equals( str )) //查看有没有相同的MDI子窗体

    {

        this.MdiChildren[i].Activate(); //子窗体已经被创立,激活它

        remark=false;

        break;

    }

    if(remark) // 末创立,建立子窗体

    {

        Form2 temp_form = new Form2();

        temp_form.MdiParent=this;

        temp_form.Name=str;

        temp_form.Text=str;

        temp_form.Show();

    }

}

 

若是有很多种窗体(例如form2 , form3 , form4等等 )要创建,那么可以用一个switch来判断具体要创建哪个。

 

还有一个办法就是判断子窗体的句柄,请参见CSDN中“愚翁专栏”博客的相关内容。在这里不重复讲述了。

也可以看我的另外一篇博客

 

如何使窗体不重复被打开

http://blog.csdn.net/tjvictor/archive/2007/01/18/1486420.aspx

VC中如何将MDI的多个子窗体设置为不同的标题

在默认情况下,MFC自动将子窗口标题设为该子窗口所打开的文档标题。但实际上,子窗口标题与该子窗口标题所打开的文档标题并不是同一回事。我们可做如下实验:    (利用ResourceView打开资...
  • stephen1315
  • stephen1315
  • 2012年05月02日 11:25
  • 2646

C#多次单击按钮只能打开一次子窗体及创建MDI子窗体

我目前做了一个主窗体,里面有个按钮,当点击按钮后弹出另一个子窗体;但我把子窗体最小化后再点击主窗体上的按钮,又会弹出一个新的子窗体。我想问下,该怎样实现 无论点击多少次按钮,都只是显示一个子窗体。...
  • Fan_lizhou
  • Fan_lizhou
  • 2014年09月29日 11:37
  • 1537

C#下让MDI子窗体布满父窗体的整个工作区

 前提是你已经建立了一个窗体Form1,并设置窗体的  IsMdiContainer  属性为真,其次就是建立窗体的子窗体Form2,并设置所有的窗体的FormBorderStyle属性为FixedS...
  • sbz0409
  • sbz0409
  • 2009年01月12日 13:37
  • 3809

如何实现MDI窗体不重复打开同一个子窗体?

使用MDI窗体时,默认是可以多次打开同一个子窗体的,那么如何控制不重复打开同一个子窗体呢?MDI窗体有个重要属性——MdiChildren,该属性表示MDI窗体打开的子窗体的数组,循环遍历该数组,可以...
  • JAVAbccd
  • JAVAbccd
  • 2017年12月26日 14:41
  • 123

使用C#打开新窗口关闭旧窗口的方法;winform中防止重复打开多个相同子窗体

1、网上流传最广的应该是隐藏法了,原理就是把旧窗口隐藏掉,再打开新窗口。 具体的代码如下: //在旧窗口中的合适位置写这些代码 NewForm fm=new NewForm() //新建一...
  • Lwmjm
  • Lwmjm
  • 2012年10月18日 11:53
  • 23610

今天把以前解决的MDI子窗体,多次打开同一窗体代码共享一下.逻辑不够完善但是解决了问题

private void ultraExplorerBar1_ItemClick(object sender, Infragistics.Win.UltraWinExplorerBar.ItemEve...
  • czmtxz
  • czmtxz
  • 2006年02月07日 09:05
  • 995

MDI树形控制多个子窗口视图

  • 2010年05月05日 22:06
  • 64KB
  • 下载

如何使MDI子窗体不重复被打开

有很多朋友希望MDI子窗体不重复被打开,如果子窗体已经被创建了,则把它激活,而不是又创建了一个MDI子窗体,其实中C#提供的MdiChildren这个属性就可以解决这个问题,下面假设一个treevie...
  • tjvictor
  • tjvictor
  • 2006年06月21日 13:22
  • 5247

C# MDI导航子窗体 子窗体只运行一次

  • 2010年07月28日 22:55
  • 107KB
  • 下载

VB.NET 如何防止重复打开MDI子窗体

  VB.NET中,在访问窗体之前,你必须进行窗体实例化,然后才能打开,如:           Dim frm1 As New Form1           frm1.MdiParent = Me...
  • sundenskyqq
  • sundenskyqq
  • 2009年12月19日 09:55
  • 2066
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何使MDI子窗体不重复被打开
举报原因:
原因补充:

(最多只允许输入30个字)