Winform打开窗体的几种方法和注意事项

一、打开MDI子窗体,且允许重复打开。

FrmMytest frmMytest = new FrmMytest();
frmMytest.MdiParent = this;
frmMytest.Show();

二、打开MDI子窗体,但不允许重复打开;即如果窗体未打开过,则直接打开,如果打开过,原来的窗体直接显示在最上面。

int index = HaveOpened(this, "FrmMytest");        
if (index == -1)          
{               
	FrmMytest frmMytest = new FrmMytest();
	frmMytest.MdiParent = this;              
	frmMytest.Show();          
}           
else           
{              
	this.MdiChildren[index].Show();           
}

其中,HaveOpened方法如下:

/// <summary>
/// 功能名称:查看MDI子窗体是否已经被打开
/// 输入参数:MdiFather,Form,需要判断的父窗体对象
///          MdiChild,string,需要判断的子窗体控件名
/// 返回结果:-1为没有被打开,正数为子窗体集的数组下标
/// </summary>
public static int HaveOpened(Form frmMdiFather, string strMdiChild)
{
	int bReturn = -1;
	for (int i = 0; i < frmMdiFather.MdiChildren.Length; i++)
	{
		if (frmMdiFather.MdiChildren[i].Name == strMdiChild)
		{
			frmMdiFather.MdiChildren[i].BringToFront();
			bReturn = i;
			break;
		}
	}
	return bReturn;
}

三、Show的方法

1、非模式窗体的打开方法

new FrmMytest().Show();

2、模式窗体的打开方法

FrmMytest frmMytest = new FrmMytest();
frmMytest.ShowDialog();

四、说明

1、打开的子窗体不会在windows任务栏中显示,避免用户感觉一个系统有多个运行的问题。

2、主窗体设置属性IsMdiContainer = true,MDI子窗体IsMdiContainer = false,否则系统编译时会报错。

3、Show的方法,打开的子窗体不会在Windows任务栏中显示的问题,需要在子窗体的属性中,将Form.ShowInTaskbar设置为false;但如果程序中加入了断点,想从程序中返回子窗体时有问题,在windows任务栏中找不到这项,即无法让新窗体再次显示。

 

—— 完 ——
相关推荐
评论

立 为 非 似

中 谁 昨 此

宵 风 夜 星

。 露 , 辰

文章点击榜

细 无 轻 自

如 边 似 在

愁 丝 梦 飞

。 雨 , 花