如何让对话框显示的时候只显示最新的一个,关闭以前?我定义了一个MyForm类,我每次声明了一个新的MyForm对象后,在用Show()方法显示的时候,如何将以前声明的且已经显示的MyForm对象关闭掉。这样可以保证没次只能显示一个MyForm。

解决方案 »

  1.   

    单例,不是销毁而是始终都只是显示一个对话框就OK了,关闭时不要让它close,hide一下就ok了,有关单例,
    google 一下 singleton
      

  2.   

            #region MDI子窗体实例化一次
            /// <summary>
            /// 名称:CheckChildOpenState
            /// 功能:用子窗体的Name进行判断是否已实例化,如果存在则将他激活
            /// </summary>
            /// <param name="MdiForm">容器窗体</param>
            /// <param name="ChildForm">子窗体</param>
            public static void CheckChildOpenState(Form MdiForm, Form ChildForm)
            {
                foreach (Form tempChildForm in MdiForm.MdiChildren)
                {
                    if (tempChildForm.Name == ChildForm.Name.ToString())
                    {
                        if (tempChildForm.WindowState == FormWindowState.Minimized)
                        {
                            tempChildForm.WindowState = FormWindowState.Normal;
                        }
                        tempChildForm.Activate();
                        return;
                    }
                }
                ChildForm.MdiParent = MdiForm;
                ChildForm.Show();
            }
            #endregion
      

  3.   

    不是,是你打开的时候,就不会打开多个.你把你的主窗体和子窗体传进去行就行.调用:CheckChildOpenState(主窗体name,子窗体name)
      

  4.   

    也可通过窗口句柄进行判断![DllImport("user32.dll",EntryPoint="SetParent",CharSet=CharSet.Auto)]
    internal static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndParent);