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창의 위에 있을 수 있다.
이거 찾느냐고 얼마나 애먹었는지...
ㅜ_ㅜ
역시 아는 자가 승리한다는 말은 백번 옳다.
'- C#' 카테고리의 다른 글
[DevExpress] GridControl 에서 RepositoryItem이 안보이는 현상 (1) | 2024.02.26 |
---|---|
[C#] 메모장으로 저장, 저장한 메모장 파일 바로 열기. (0) | 2020.03.27 |
[C#] Windows Forms 'ArrayList' Class 사용하기 (using System.Collections) (0) | 2019.04.21 |
[C#] 배열 생성 / ArrayList와 List 컬렉션 사용해보기. (0) | 2019.04.15 |