본문 바로가기
백엔드/C#

마우스 옆에 다이얼로그 뜨게 하기

by 1005ptr 2019. 3. 5.
반응형

기본적으로는

    • FormStartPosition.Manual 선택하고
    • Mouse Up 이벤트에서 나오는 e.X, e.Y값으로 Dialog에 Location 값을 주면 되는데
듀얼모니터를 쓰는 경우, 무슨 모니터에서 시작인지는 안나오는 것 같다.
Mouse Up의 좌표값은 현재 모니터의 왼쪽 위를 기준으로 하는걸로 보임

DesktopLocation : Windows 데스크탑에서의 위치

그래서 Dialog를 열려는 현재 Form의 DesktopLocation 속성을 사용하려는데 여전히 동작 안함
알고보니 현재 Form은 MdiForm이라 자신이 속한 MdiParent가 Desktop으로 인식되는듯이 좌표값이 나온다.
DesktopLocation 속성을 사용할때 해당 폼이 MdiForm일 경우 자신의 ParentForm의 DesktopLocation을 사용해야 정상적으로 처리 가능

결과적으로 이렇게 작성했다.

다이얼로그View.StartPosition = FormStartPosition.Manual;
다이얼로그View.Location = new Point(this.ParentForm.DesktopLocation.X + e.X, this.ParentForm.DesktopLocation.Y + e.Y);



반응형

댓글