C#:WinForm应用程序中用鼠标移动控件位置

有时候在WinForm程序中,我们需要用鼠标移动程序窗口中的对象(例如图片对象等)的位置,可以通过定义控件的鼠标事件来实现。以命名为pictureBox1的PictureBox控件为例,分别定义它的MouseDown(按下鼠标按钮)、MouseMove(移动鼠标)、MouseUp(释放鼠标按钮)三个事件,代码如下:

//获取和设置控件是否随鼠标移动
bool moveFlag = false;
//按下鼠标时鼠标的X和Y坐标
int xPos,yPos;

private void pictureBox1_MouseDown(object sender, MouseEventArgs e){
    //当鼠标位于控件上并按下按钮时,设置moveFlag为True,控件可随鼠标移动
    moveFlag = true;
    //设置按下按钮时鼠标的坐标值
    xPos = e.X;yPos=e.Y;
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e){
    //如果没有捕获到MouseDown事件,则返回
    if(!moveFlag)
        return;
    //把鼠标移动过程中的坐标值与之前按下按钮时鼠标坐标的初始值(xPos和yPos)进行计算,得出控件的Top和Left值
    pictureBox1.Top += (e.Y - yPos);
    pictureBox1.Left+= (e.X - xPos);
}

private void pictureBox1_MouseUp(object sender, MouseEventArgs e){
    //释放鼠标按钮,设置moveFlag为False,控件不能随鼠标移动,如果不设置的话,即使释放按钮,控件依然随鼠标移动
    moveFlag = false;
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值