- C#

[C#] Windows Form 폼 위에 다른 폼 띄우기. (Topmost, Owner, Show, ShowDialog, 모달, 모달리스)

codingEasy 2020. 4. 8. 14:35

 

Main창이 존재할 때, 거기에서 다른 폼을 또 띄우고 싶을 때가 있다.

 

Main.cs
Child.cs

두 개의 폼이 있다고 가정한다.

(1) Form 띄우기. (Show, ShowDialog)


Child child = new Child();
child.Show(); // modal less
child.ShoDialog(); // modal

 

모달리스로 child의 명령창을 띄웠을 때 Main폼으로 포커스를 갈 수 있다.

반대로, 모달로 폼을 띄우게 되면 child 폼을 띄웠을 때 Main폼으로 포커스를 갈 수 없다.

 

 

 

(2) TopMost

Form.cs 파일을 만들게 되면 폼 속성의 TopMost는 False로 되있다.

이 것을 True로 바꿔버리게 되면,
윈도우 상의 모든 실행화면의 최상위가 된다.

C#으로 돌리고 있는 프로그램이 아니더라도 윈도우상에 존재하는 예를들어 계산기, 메모장 등등 프로그램보다도 맨 앞으로 오게된다.

단순히, 실행파일 내에서만 앞으로 오고싶다면 이 때 Owner를 사용하면 편리하다.

 

 


(3) Owner

 

Child child = new Child();
child.Show();

이 코드로 실행을 하면, 모달리스폼이어서 child폼에서 Main폼을 클릭하면 Main폼 뒤로 child폼이 숨어버리는 현상이 발생한다.

항상 Main창 위에 있고, 다른 명령을 내릴 수도 있게 모달리스폼이었으면 좋겠다!

한다면, Owner코드를 추가하면된다.

Child child = new Child();
child.Owner = this;
child.Show();

여기에서 this는 저 코드가 적힌 Main이다.

이렇게 하면, 항상 Main창의 위에 있을 수 있다.

 

 

이거 찾느냐고 얼마나 애먹었는지...
ㅜ_ㅜ

역시 아는 자가 승리한다는 말은 백번 옳다.