this.TransparencyKey = System.Drawing.SystemColors.Control;//透明色
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;//无边框
class FormMove
{
private bool isMouseDown = false; private System.Drawing.Point FormLocation; //form的location
private System.Drawing.Point mouseOffset; //鼠标的按下位置
private Form movedForm = null;
private Control conObj = null;
private FormMove() { }
/// <summary>
///
/// </summary>
/// <param name="movedForm">要移动的窗体</param>
/// <param name="conObj">控制窗体移动的控件,为null,则是窗体本身</param>
public FormMove(Form movedForm, Control conObj)
{
this.movedForm = movedForm;
this.conObj = (conObj == null) ? movedForm : conObj;
this.conObj.MouseDown += new MouseEventHandler(ConObj_MouseDown);
this.conObj.MouseMove += new MouseEventHandler(ConObj_MouseMove);
this.conObj.MouseUp += new MouseEventHandler(ConObj_MouseUp);
}
private void ConObj_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isMouseDown = true;
FormLocation = movedForm.Location;
mouseOffset = Control.MousePosition;
this.conObj.Cursor = System.Windows.Forms.Cursors.SizeAll;
}
}
private void ConObj_MouseUp(object sender, MouseEventArgs e)
{
this.conObj.Cursor = System.Windows.Forms.Cursors.Default;
isMouseDown = false;
}
private void ConObj_MouseMove(object sender, MouseEventArgs e)
{
if (isMouseDown)
{
int _x = 0; int _y = 0;
System.Drawing.Point pt = Control.MousePosition;
_x = mouseOffset.X - pt.X; _y = mouseOffset.Y - pt.Y;
movedForm.Location = new System.Drawing.Point(FormLocation.X - _x, FormLocation.Y - _y);
}
}
}