为什么这样拖不动窗口

welcomgoodies 2003-07-24 03:09:00
该窗口有一个panel,想通过它来拖动窗口,代码如下,就是拖不动,不知道是什么原因
private void panel1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button==MouseButtons.Left)
{
dragging=true;
mousex =-e.X;
mousey =-e.Y;
int clipleft=this.PointToClient(MousePosition).X-panel1.Location.X;
int cliptop =this.PointToClient(MousePosition).Y-panel1.Location.Y;
int clipwidth=this.ClientSize.Width-(panel1.Width-clipleft);
int clipheight=this.ClientSize.Height-(panel1.Height-cliptop);
Cursor.Clip=this.RectangleToScreen(new Rectangle(clipleft,cliptop,clipwidth,clipheight));
panel1.Invalidate();
}
}

private void panel1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(dragging)
{
//移动控件到新的位置
Point MPosition;
MPosition=this.PointToClient(MousePosition);
MPosition.Offset(mousex, mousey);
//确实控件不能离开主窗口
panel1.Location=MPosition;
}
}

private void panel1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(dragging)
{
dragging=false;
//结束拖动
Cursor.Clip=System.Drawing.Rectangle.Empty;
panel1.Invalidate();
}
}
...全文
184 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Rossetti 2003-07-25
  • 打赏
  • 举报
回复
private int p1,p2;
private bool move_me;
private void panel1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
p1=e.X;
p2=e.Y;
move_me=true;
}

private void panel1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(move_me)
{
this.SetBounds(this.Bounds.X+(e.X-p1),this.Bounds.Y+(e.Y-p2),this.Width,this.Height);
}
}

private void panel1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
move_me=false;
}
welcomgoodies 2003-07-24
  • 打赏
  • 举报
回复
这两个方法是做什么用的啊,在哪个类里?
ddy2000 2003-07-24
  • 打赏
  • 举报
回复
写错了
在MouseDown需要添加捕捉鼠标方法setCapture()
在MouseUp需要添加释放捕捉鼠标方法releaseCapture()

ddy2000 2003-07-24
  • 打赏
  • 举报
回复
在MouseDown需要添加捕捉鼠标方法setCapture()
在MouseDown需要添加释放捕捉鼠标方法releaseCapture()
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2003-07-24 03:09
社区公告

让您成为最强悍的C#开发者