方法一:
直接检测是否已经打开此MDI窗体
// 是否已经打开了?(用循环来判断)
foreach (Form childrenForm in this.MdiChildren)
{
//检测是不是当前子窗体名称
if (childrenForm.Name == "子窗体名称")
{
//是的话就是把他显示
childrenForm.Visible = true;
//并激活该窗体
childrenForm.Activate();
return;
}
}
//下面是打开子窗体
Form1 childrenForm = new Form1();
childrenForm.MdiParent = this;
childrenForm.Show();
childrenForm.WindowState = FormWindowState.Maximized;
方法二:
将子窗体设成单件:
namespace WindowsFile
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
private void Form3_Load(object sender, EventArgs e)
{
richTextBox1.LoadFile(".\\test.txt", RichTextBoxStreamType.PlainText);
}
private static Form3 childform=null;
public static Form3 Form3Signleton()
{
if (childform == null)
{
childform = new Form3();
}
return childform;
}
private void Form3_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
this.Dispose(true);
childform = null;
}
catch(Exception e)
{ MessageBox(e.ToString()); }
}
方法三:
这个没用过,也是直接判断
private static frm_rk frmchild;//定义子窗体
private void 商品入库ToolStripMenuItem_Click(object sender, EventArgs e)//按钮事件
{
frm_rk frmchild = GetForm();
frmchild.Show();
}
private frm_rk GetForm()//判断子窗体状态,防止重复显示
{
if (frmchild == null || frmchild.IsDisposed)
{
frmchild = new frm_rk();
frmchild.MdiParent = this;
}
return frmchild;
}
分享到:
相关推荐
附件中包含一个C#WinForm中父MDI窗体不重复打开子窗体的案例,父窗体在打开子窗体之前先判断子窗体是否存在,若存在则激活;若不存在,实例化并打开子窗体。开发环境:VS2012。
C# Winform在MDI中打开一个子窗体关闭上一个子窗体
c#利用委托来实现关闭子窗口通知父窗口执行 c#利用委托实现关闭子窗口通知父窗口 c#利用委托关闭子窗口通知父窗口 c#利用委托来实现关闭子窗口通知父窗口执行 c#利用委托实现关闭子窗口通知父窗口 c#利用委托关闭子...
C#中父窗口和子窗口之间实现控件互操作C#中父窗口和子窗口之间实现控件互操作
C#WinForm获取子窗口返回值 及窗口取消的处理
使用C#打开新窗口关闭旧窗口的方法 使用C#打开新窗口关闭旧窗口的方法 使用C#打开新窗口关闭旧窗口的方法 使用C#打开新窗口关闭旧窗口的方法
Winform的MDI父窗体中的子窗体最大化后消除子窗体在父窗体菜单栏中的图标。
创建简单的MDI应用程序,制作了一个简单的窗体应用程序,主要实现在主窗体中单击控件弹出子窗体的功能
一个C#多窗口应用程序窗口,演示 MDI form多窗口模式的实现原理,代码完整,有VS环境的自己重新编译生成下,特别适合C#基础入门者
Mdi子窗口之闪烁问题的解决办法和思路,从系统绘制过程入手
//子窗体不存在,打开子窗体 if (cwExists == false) { parentWindow.IsMdiContainer = true; childrenWindow.MdiParent = parentWindow; childrenWindow.WindowState = System.Windows.Forms.FormWindowState...
利用tabcontrol实现winform子窗口切换,且为tabpage添加关闭
2、可以使子窗口只运行一次,即C# MDI子窗体只有一个实例。 3、可以定位到某个子窗口,并调用其函数。 这是个简单的例子,不过却是打好了一个框架。 子窗口置底函数是...同一类型的子窗口只打开一个...调用示例....
Visual C#中的MDI编程
本人第一个资源,用C#语言编写的MDI字处理应用程序,具有简单的文档编辑和处理功能,比较全面地体现了MDI多文档界面应用程序的特点。
c#mDI窗口编程教学,让你充分了解c#在多窗口编程的功能
为自己编写的实例,源代码需用VisualStudio2008甚至更高版本才能打开。 主要讲解MDI、多文档界面、MDILayout枚举这三方面的内容,对于初学喆起到一定的帮助希望,对于虾米级人物,,呵呵,献丑了。
Visual C# 中的MDI编程
C# winform 中,关闭打开的窗口,关闭所有打开的窗口
C#中多文档界面MDI的应用教程,MDI编程主要就是要在主窗体中能够新建一个MDI窗体,并且能够对主窗体中的所有MDI窗体实现层叠、水平平铺和垂直平铺