SSISO Community

갤러리정

Form.TopMost 와 Form.Owner 속성 - CSharp

TopMost는 말그대로 최상위란 뜻입니다.
이 속성을 이용 하면 폼을 응용 프로그램의 맨위 폼으로 표시할지 여부를 나타내는 값을 가져오거나 설정할수 있습니다.

 

맨 위 폼은 활성 폼이나 전경 폼이 아닌 경우에도 다른 모든 폼과 겹치는 폼을 말합니다.
때문에.. Windows의 DeskTop상에 서로 다른 응용프로그램을 사용중이라면
이 속성이 true인 폼은 모든 응용프로그램의 맨위에 위치하게 됩니다.

 

보통, 메모장의 찾기, 바꾸기, 프로그램정보등의 용도와 비슷하게 쓰이는 폼들은

사용중인 응용프로그램의 폼 위에 와야하는데, 이와 같은 폼들은
이 속성을 통해 굳이 모든 응용프로그램의 최상위에 올 필요가 없습니다.
해당하는 응용프로그램의 최상위에 오기만 하면 되는거죠.

 

예를 들자면.....

만약 메모장에서 찾기폼에 TopMost속성을 true로 주었다면...
메모장 찾기폼을 이용중에 익스플로러창을 띄웠을때..
메모장 찾기폼은 익스플로러의 위에 위치하게 됩니다..
이렇게 된다면 문제가 있겠죠?

 

메모장 찾기폼을 이용중 익스플로러창을 띄웠다면.
당연히 익스플로러창이 맨위에 떠야하고...
메모장을 활성화시켰을경우 찾기폼은 메모장위에 위치하고 있어야 합니다.

 

이 문제는 폼의 속성에 Owner이라는 속성을 이용하면 쉽게 해결할수 있습니다.
사용 방법은 다음 예제코드를 참고하세요.

 

        subForm sFrm = new subForm();
        sFrm.Owner = this;  //이 부분만 추가 하시면 됩니다!
        sFrm.Show();

 

        // sFrm : 새로 띄울 폼객체, (메모장에서 찾기, 바꾸기, 이동, 메모장정보에 해당하는...)
        // this : 폼객체를 띄우는 부모폼 자신 (메모장에서 메모장 프로그램 자신)


참고, TopMost속성이 true인 폼이  동시에 두개가 뜨면 나중에 뜨는 윈도우폼이 최상위가 됩니다.


7645 view

4.0 stars