2020. 2. 10. 17:18ㆍ컴퓨터/오류 해결
[비쥬얼 스튜디오 C#] 메세지박스(MessageBox) TopMost 폼(Form)에 가려지는 현상 해결법
우선, TopMost는 폼 속성으로 윈도우 최상단으로 올려주는 기능입니다.
true로 설정하면 어떤 짓을 하더라도 가장 위 쪽에서 실행됩니다. (눈으로 봤을 때)
TopMost를 true로 가지는 폼을 사용할 때는 주의해야 할 점이 있습니다.
TopMost를 false로 가지는 폼에서 메세지박스를 쓸 때 인데요.
어떤 느낌인지 그림으로 볼까요?
TopMost가 false인 폼에서 메세지박스를 호출하면, 그 메세지박스도 TopMost 가 false인 상태로 나타납니다.
그래서 TopMost가 true인 폼에 가려지는 것입니다.
만약 TopMost 폼이 가장자리 쪽에 있어서 메세지박스를 가리지 않다면 괜찮을 것입니다.
하지만, 불가피하게 정중앙에 있는 상황이면, 메세지박스를 볼 수 없고, 심하면 프로그램의 작동이 멈추는 경우까지 생길 수도 있습니다.
그러면 해결 방법은 없는건가요?
당연히 있죠. TopMost 속성이 true인 메세지박스는 TopMost 가 true인 폼 위에서도 나타날 수 있습니다.
즉, MessageBox를 TopMost 속성을 가진 상태로 호출하면 되는 것이죠.
어떻게 할까요?
MessageBox.Show의 기본 함수 프로토타입은 많습니다.
MessageBox.Show(string, string); MessageBox.Show(string, string, MessageBoxButtons); MessageBox.Show(string, string, MessageBoxButtons, MessageBoxIcon); .... |
그 중에서 메세지박스의 부모를 정할 수 있는 함수 프로토타입을 사용하면 됩니다.
public static System.Windows.Forms.DialogResult Show (System.Windows.Forms.IWin32Window owner, string text, string caption);
메세지박스의 owner(~=부모)를 설정할 수 있답니다.
즉, TopMost가 true인 owner에서 나온 MessageBox는 TopMost가 true가 됩니다.
MessageBox.Show(new Form() { TopMost = true}, "content", "title");
위 처럼 사용하시면 잘 됩니다!
'컴퓨터 > 오류 해결' 카테고리의 다른 글
[비쥬얼 스튜디오 C#] 컴파일된 파일 다른 컴퓨터에서 실행 시 해상도 깨짐 현상 해결법 (0) | 2020.02.07 |
---|---|
OllyDbg Not a valid PE file 오류 해결 방법 (올리디버거 대체 프로그램 소개 x64dbg) (0) | 2020.01.24 |