问题描述:
设置窗体:FormBorderStyle=None;则无法对窗体的位置进行移动。
解决方式:
方法1.重写WndProc()方法,当点击窗体部分,移动鼠标窗体跟着移动:
protected override void WndProc(ref Message m){
base.WndProc(ref m);
if(m.Msg==0x84){
switch(m.Result.ToInt32()){
case 1:
m.Result=new IntPtr(2);
break;
}
}
}
方法2.给窗体控件绑定事件,触发事件窗体移动:
在此以Panel控件为例。
定义Point变量存放初始位置。
Point downPoint;
private void pnl_MouseDown(object sender,MouseEventArgs e){
downPoint=new Point(e.X,e.Y);//记录初始鼠标位置
}
private void pnl_MouseMove(object sender,MouseEventArgs e){
if(e.Button==MouseButtons.Left){
this.Location=new Point(this.Location.X+(e.X-downPoint.X),this.Location.Y+(e.Y-downPoint.Y));//窗体移动相应的增量
}
}
以上是两种简单的移动窗体的方式~