Please Enable JavaScript!
Gon[ Enable JavaScript ]

[C#] MDI 폼에서 자식폼이 열어 있을 때 앞으로 보내기

기타 언어/C# & MFC
반응형

[C#] MDI 폼에서 자식폼이 열어 있을 때 앞으로 보내기

 

환경 : Visual Studio 2012

 

MDI 폼에서 여러 폼을 열어서 풀 스크린으로 보다보면 기존에 열어 놨던 폼 개체를 계속 생성하는 경우가 있습니다. 기존에 열려져 있다면 제일 앞으로 당겨서 보여주면 되겠죠.

 

아래 그림처럼 두개의 창을 서로 번갈아 가며 제일 앞으로 당겨서 화면에 보여주는 것입니다.

 

[C#] 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();
}
반응형
Posted by 녹두장군

댓글을 달아 주세요