반응형
private void panel_MouseMove(object sender, MouseEventArgs e)
{
Screen[] screens = Screen.AllScreens;
if(screens.Length >1)
{
GlobalConfig.Instance.APPPosition = screens[0].WorkingArea.Contains(this.Location) ? 0: 1;
}
}
Screen[] src = Screen.AllScreens;
var area = src[GlobalConfig.Instance.APPPosition].WorkingArea;
this.Location = new Point((area.Width - this.Width) / 2 + area.X, (area.Height - this.Height) / 2);
22.10.24 문제 현상
- 단일 모니터의 경우 .ShowDialog()로 modal 의 방법으로 띄워줄 때 문제가 없지만 듀얼 or 멀티 모니터의 경우 앱이외의 창에 포커스를 이동했을 경우 .ShowDialog()나 CenterToParent()를 해주어도 async로 동작하는 다이얼로그 폼에서는 포커스가 다른 모니터로 이동하게 된다. 따라서 다이얼로그 async로 뜰 때에는(=Focus가 앱이 아닌 다른 창으로 이동했을 경우) 현재 실행 되고 있는 모니터의 위치를 찾아주는 방법으로 접근해야함을 알게되었다.
또 다른 접근방법
- 포커스를 잃었을때의 이벤트를 받아서 다이얼로그폼을 띄워주어야하는 시점에, 포커스를 현재 앱이 실행되고 있는 곳으로 포커스를 옮겨주는 방법이 있을 수 있다.
https://akinokaze.tistory.com/168
반응형
'Language > C#' 카테고리의 다른 글
Cache 파일 캐시 시스템 (0) | 2022.10.31 |
---|---|
[ 벤치마크 ] 부하분산 체크 (0) | 2022.10.26 |
모달 / 모달리스 (0) | 2022.10.24 |
[TDD] (0) | 2022.10.18 |
이슈 해결 과정 (0) | 2022.10.14 |