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

 我来答
I乐于助人I
推荐于2018-04-24 · TA获得超过395个赞
知道小有建树答主
回答量:272
采纳率:100%
帮助的人:133万
展开全部

一、打开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任务栏中找不到这项,即无法让新窗体再次显示

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式