C#Winform打开窗体的几种方法、注意事项的总结

来源:互联网 发布:cda数据分析师有什么用 编辑:程序博客网 时间:2024/06/08 09:09

C#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();
           

}


 

        /// <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任务栏中找不到这项,即无法让新窗体再次显示,有好的解决方法吗???。

原创粉丝点击