윈도우를 이동시키기 위해서는 맨위에 타이틀 부분은 드래그 해야 하지만 폼을 드래그해 이동시킬 수 있습니다. 이를 구현하는 방법은 두게의 이벤트가 필요 합니다.


선행 조건으로 마우스 위치를 기억할 포인터를 선언 합니다.
1
private Point mousePoint
그리고 MouseDown 이벤트를 등록해야 합니다.
1
2
3
4
private void Form_MouseDown(object sender, MouseEventArgs e)
{
    mousePoint = new Point(e.X, e.Y);
}
MouseDown이벤트 다음 MouseMove이벤트를 등록 합니다.
1
2
3
4
5
6
7
8
private void Form_MouseMove(object sender, MouseEventArgs e)
{
    if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
    {
        Location = new Point(this.Left - (mousePoint.X - e.X),
             this.Top - (mousePoint.Y - e.Y));
    }
}
그리고 컴파일해서 폼을 클릭해 드래그 해보면 폼이 움직이는걸 확인하실 수 있습니다.
원리는 MouseDown이벤트로 현제 마우스에 위치를 가져오고 MouseMove이벤트에서 창위치에서 마우스가 움직인 만큼의 거리를 계산하게 됩니다. 그럼 그만큼 창이 이동하게 됩니다.



Posted by 요지
,