폼에 속성중 FormBorderStyle이 None으로 설정된 경우 최대화, 최소화, 종료 버튼이 없기 때문에 폼자자신을 클릭시(클릭후 버튼을 때지 않았을경우) 폼이 움직일 수 있도록 해줘야 합니다. 때문에 이동이 가능 하려면 몇가지 장치가 필요합니다. 폼에 이벤트 속성중 3가지를 사용하게 되는대 그 속성은 MouseDown, MouseMove, DoubleClick 입니다.
private Point mousePoint; private void form_MouseDown(object sender, MouseEventArgs e) { mousePoint = new Point(e.X, e.Y); } // 마우스 클릭시 먼저 선언된 mousePoint변수에 현재 마우스 위치값이 들어갑니다. 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)); } } // 클릭상태로 마우스를 이동시 이동한 만큼에서 윈도우 위치값을 빼게됩니다. private ovid form_DoubleClick(object sender, EventArgs e) { if (this.WindowState == FormWindowsState.Maximized) { this.WindowState = FormWindowsState.Normal; } else { this.WindowState = FormWindowsState.Maximized; } } // 폼에 최대화, 최소화 버튼이 없기 때문에 더블클릭시 같은 효과를 냅니다.
주석에 간단하게 설명되어 있는대로 이해하시면 됩니다. 처음 MouseDown이벤트가 하는일은 마우스가 클릭될때의 마우스 위치를 기억합니다. MouseMove는 기억되어있는 값에서 현제 윈도우 위치를 빼게 됩니다. 단 조건은 마우스 왼쪽버튼에 클릭이 끝나지 않았을 경우 입니다. None스타일에 폼이다 보니 최대화와 최소화 버튼이 없습니다. 그래서 DoubleClick이벤트에서 더블클릭으로써 최대화와 일반크기를 조절 합니다.