通过控件拖动窗体
适用于无边框窗体,自定义标题栏
之前在网上找的,如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;}}}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。