본문 바로가기
개발언어/C#.NET

C# 폼 중복생성 방지

by 엔돌슨 2009. 12. 1.
반응형



http://social.msdn.microsoft.com/Forums/en-US/vblanguage/thread/ee8c3a40-a5cf-4940-967d-09a288ab3328


MDI 폼이 아닌 일반폼의 경우에 중복으로 폼이 생성되는것을 방지한다

        /// <summary>
        /// 현재 열려있는 폼 중복생성 방지
        /// </summary>
        /// <param name="tp">The tp.</param>
        /// <returns></returns>
        private bool FormIsExist(Type tp)
        {
            foreach (Form form1 in Application.OpenForms)
            {
                if (form1.GetType() == tp)
                {
                    form1.Activate();
                    return true;
                }
            }
            return false;
        }

<응용>
/// <summary>
        /// 폼을 중복생성하지 않고 보여줌
        /// </summary>
        /// <param name="frm">The FRM.</param>
        protected void FrmShow(Form frm)
        {
            bool FrmisExist = new bool();
            FrmisExist = false;

            foreach (Form form1 in Application.OpenForms)
            {
                if (form1.GetType() == frm.GetType())
                {
                    FrmisExist = true;
                }
            }

            // 폼존재여부에 따라서 생성과 파기
            if (!FrmisExist)
            {
                frm.Show();
                frm.Activate();
            }
            else
            {
                frm.Dispose();
            }
           
        }

호출하기
FrmShow(new WorkUnitSeting());   //폼을 생성하여 넘겨줌







MDI 폼의 폼의 자식폼중 중복으로 폼이 생성되는것을 방지한다.


        private bool FormIsExist(Type tp)
        {
            foreach (Form form1 in this.MdiChildren)
            {
                if (form1.GetType() == tp)
                {
                    form1.Activate();
                    return true;
                }
            }
            return false;
        }