'C# 폼 중복실행 방지'에 해당되는 글 1건

728x90

부모폼/자식폼이 아닌 New Form 으로 Form 을 띄울 때 중복 실행이 되는 걸 방지하는 방법이다.

폼 중복 실행방지, 폼의 위치를 원하는 위치에 설정, 자식폼으로 값을 넘기는 부분,

자식폼을 Show() 로 실행할 것인지 ShowDialog() 로 실행할 것인지를 모두 기록한 코드이다.


private void btnDictionary_Click(object sender, EventArgs e)
{
    //폼 중복 열기 방지
    foreach (Form openForm in Application.OpenForms)
    {
        if(openForm.Name == "WBrowser") // 열린 폼의 이름 검사
        {
            if(openForm.WindowState == FormWindowState.Minimized)
            {  // 폼을 최소화시켜 하단에 내려놓았는지 검사
                openForm.WindowState = FormWindowState.Normal;

                openForm.Location = new Point(this.Location.X + this.Width, this.Location.Y);

            }
            openForm.Activate();
            return;
        }
    }
    WBrowser wb = new WBrowser();  // 폼이 실행되지 않았으면 New Form 객체 생성
    // 자식폼으로 값을 넘겨줄 것이 있으면 이 부분에 코드를 추가

    wb.StartPosition = FormStartPosition.Manual;  // 원하는 위치를 직접 지정해서 띄우기 위해
    wb.Location = new Point(this.Location.X + this.Width, this.Location.Y); // 메인폼의 오른쪽에 위치토록
    wb.Show();
}


자식폼을 띄울 때 Show() 로 할 것인지, ShowDialog() 로 할 것인지에 코드가 약간 달라진다.

ShowDialog() 로 하려면 Show() 대신에 아래와 같이 코드를 작성해야 한다.

if (wb.ShowDialog() == DialogResult.OK)

{

     // 자식폼에서 받아서 처리할 내용

}


자식폼에서는 DialogResult = DialogResult.OK;  가 추가되어야 한다.


처음 인터넷에서 정보를 찾아서 헤매고 다닐때에는 무슨 의미인지도 몰랐는데 이제는 의미 파악이 되었다.

그래서 처음에 기록해두었던 것을 보완해서 작성을 했다.

혹시라도 이 게시글을 보는 초보자분은 도움되면 공감 꾸욱 눌러주세요.

블로그 이미지

Link2Me

,