适用于无边框窗体,自定义标题栏

之前在网上找的,如http://www.cnblogs.com/yuxuan/archive/2010/09/25/1834346.html这篇博文,开始移动时会瞬移几个像素.....

usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Drawing;namespaceEW.XIS.Common{///<summary>///<para>说明:窗体拖动类,通过这个类提供的方法实现窗体上任意控件可辅助拖动窗体</para>///</summary>publicclassDragFormClass{privatestaticboolisMouseDown=false;privatestaticPointmouseOffset;privatestaticForm_form;///<summary>///在窗体上增加拖拽事件///</summary>///<paramname="control">控件对象</param>publicstaticvoidbindControl(Controlcontrol){//如果控件为空if(control==null){return;}_form=control.FindForm();//增加鼠标拖动窗体移动事件control.MouseMove+=newMouseEventHandler(control_MouseMove);control.MouseDown+=newMouseEventHandler(control_MouseDown);control.MouseUp+=newMouseEventHandler(control_MouseUp);}///<summary>///鼠标按下之时,保存鼠标相对于窗体的位置///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatestaticvoidcontrol_MouseDown(objectsender,MouseEventArgse){if(Control.MouseButtons==MouseButtons.Left){Pointp=_form.PointToClient(Control.MousePosition);mouseOffset=newPoint(-p.X,-p.Y);isMouseDown=true;}}///<summary>///移动鼠标的时候改变窗体位置///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatestaticvoidcontrol_MouseMove(objectsender,MouseEventArgse){if(Control.MouseButtons==MouseButtons.Left){if(isMouseDown){Pointmouse=Control.MousePosition;mouse.Offset(mouseOffset.X,mouseOffset.Y);_form.Location=newPoint(mouse.X,mouse.Y);}}}///<summary>///松开鼠标的时候,重设事件///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatestaticvoidcontrol_MouseUp(objectsender,MouseEventArgse){if(e.Button==MouseButtons.Left){isMouseDown=false;}}}}