반응형
[C#] MDI 폼에서 자식폼이 열어 있을 때 앞으로 보내기 |
환경 : Visual Studio 2012 |
MDI 폼에서 여러 폼을 열어서 풀 스크린으로 보다보면 기존에 열어 놨던 폼 개체를 계속 생성하는 경우가 있습니다. 기존에 열려져 있다면 제일 앞으로 당겨서 보여주면 되겠죠.
▶ 아래 그림처럼 두개의 창을 서로 번갈아 가며 제일 앞으로 당겨서 화면에 보여주는 것입니다.
▶ 먼저 해당하는 폼의 개체가 생성되어서 떠 있는지 검사해야 합니다. Application.OpenForms 는 떠 있는 모든 폼개체를 가져옵니다. Foreach 를 사용해 찾고자 하는 폼이 맞는지 체크합니다.
// 모든 폼을 찾는다 foreach (Form form in Application.OpenForms) { // 해당하는 타입이 맞는지 검사 if (form.GetType() == typeof(FrmOrderList)) { } }
▶ 이렇게 foreach 를 사용해 typeof 로 동일한 폼을 찾았다면 해당하는 폼을 앞으로 보내야 합니다. Activate() 사용해 활성화 시킨후 BringToFront() 이용해 제일 앞으로 당깁니다.
// 모든 폼을 찾는다 foreach (Form form in Application.OpenForms) { // 열려 있는 폼이 있을때 if (form.GetType() == typeof(FrmStoreList)) { form.Activate(); form.BringToFront(); //form.WindowState = FormWindowState.Maximized; return; } }
▶ 위의 소스로 체크해서 떠 있는 폼이 없다면 새로 만들어야 겠죠. 새로 폼 개체를 생성하고 MdiParent 속성을 이용해 MDI 폼에 붙입니다.
// 새로 폼 생성 FrmStoreList f = new FrmStoreList(); f.MdiParent = this; f.Text = "거래점 보기"; f.Show();
▶ 위 소스를 구현한 전체 함수 입니다.
// 자식폼에 상점리스트 추가하기 private void SubFormAddStoreList() { // 모든 폼을 찾는다 foreach (Form form in Application.OpenForms) { // 열려 있는 폼이 있을때 if (form.GetType() == typeof(FrmStoreList)) { form.Activate(); form.BringToFront(); //form.WindowState = FormWindowState.Maximized; return; } } // 폼새로 생성 . FrmStoreList f = new FrmStoreList(); f.MdiParent = this; f.Text = "거래점 보기"; f.Show(); }
반응형
댓글을 달아 주세요