부모폼/자식폼이 아닌 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; 가 추가되어야 한다.
처음 인터넷에서 정보를 찾아서 헤매고 다닐때에는 무슨 의미인지도 몰랐는데 이제는 의미 파악이 되었다.
그래서 처음에 기록해두었던 것을 보완해서 작성을 했다.
혹시라도 이 게시글을 보는 초보자분은 도움되면 공감 꾸욱 눌러주세요.
'C# > Layout 및 델리게이트' 카테고리의 다른 글
C# 폼 데이터 받아서 처리 (폼 중복열기 방지) (0) | 2015.10.26 |
---|---|
C# Panel 또는 TabPage 에 다른 폼 올리기 (0) | 2015.09.22 |
C# MDI(Multiple Document Interface) (0) | 2015.09.17 |
C# Layout : SplitContainer (0) | 2015.09.08 |
C# Layout : TabControl 생성, 숨기기, 판넬 병합하기 (0) | 2015.09.07 |