DragDrop 시 좌표 인식오류 문제
Bit / 2012. 2. 3. 17:40
DragDrop 이벤트 설정시 좌표 인식이 잘못되는 현상이 발생할수있다
이는 현제 폼이 아닌 전체 스크린에 좌표를 가지고 오는중 생기는 문제점으로
해결방법이 여러가지가 있지만 간단한 해결방법은
PointToClient 함수사용
Dim pt As Point = Me.PointToClient(New Point(e.X, e.Y)) '현재 폼기준의 좌표를 가지고 온다.
하지만 이경우에도 문제점이 발생할수 있다
Dim targetIndex = lstPage1.GetItemAt(pt.X, pt.Y) '좌표를 기준으로 이동할 위치 데이터 가지고온다
이함수를 사용하여 좌표를 가지고 리스트뷰의 아이템을 가지고 오려는데
인식이 안된다
이유는
빨간 색으로 표시된 부분의 좌표를 제대로 인식못한다
DragDrop 함수내에서
PointToClient 함수를 사용하여 좌표를 구하면 이폼 전체를 인식한다
하지만
DragDrop 함수내에서
Dim targetIndex = lstPage1.GetItemAt(pt.X, pt.Y) 이함수를 사용하여 좌표를 적용시킬때는
리스트 뷰의 내부에서 의 좌표만 정상적으로 인식을 한다.
하여 빨간색으로 표시된 부분이 차지하는값을 날려버려야한다
pt.X = pt.X - ToolStrip1.Size.Width 이런식으로 좌표값을 빼준다