(10101101)173/C#2009. 3. 31. 19:45
폼에 속성중 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이벤트에서 더블클릭으로써 최대화와 일반크기를 조절 합니다.
Posted by Special Alex