如何使MDI子窗体不重复被打开
2007-11-07 11:37
274 查看
有很多朋友希望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中“愚翁专栏”博客的相关内容。在这里不重复讲述了。
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中“愚翁专栏”博客的相关内容。在这里不重复讲述了。
相关文章推荐
- 如何使MDI子窗体不重复被打开
- 如何使MDI子窗体不重复被打开
- 如何使MDI子窗体不重复被打开
- 如何使MDI子窗体不重复被打开
- C# Winform 防止MDI子窗体重复打开
- C#限制MDI子窗体重复打开——C#判断窗体是否已经打开 多种方法 2012-06-26更新
- 如何实现MDI窗体不重复打开同一个子窗体?
- C#限制MDI子窗体重复打开——C#判断窗体是否已经打开
- 如何实现MDI窗体不重复打开同一个子窗体?
- [代码]MDI子窗体不重复打开
- 如何使窗体不重复被打开
- 如何使窗体不重复被打开
- 如何使窗体不重复被打开
- 如何防止窗体重复打开(程序或表单重复运行)?
- 如何使窗体不重复被打开
- 如何防止窗体重复打开(程序或表单重复运行)?
- 如何实现MDI窗体不重复打开同一个子窗体?
- C# Winform 防止MDI子窗体重复打开
- 在WinForm中,如何实现MDI窗体及防止重复打开子窗体
- 如何实现单实例的MDI子窗体