C#点击窗口任意位置拖动窗口代码

C#点击窗口任意位置拖动窗口代码


c#

using System.Drawing;	//point 要用这个
using System.Windows.Forms;

namespace Example
{
public partial class FormThreeShow : Form
{
	private static bool IsDragging = false;	//用于指示当前是不是在拖拽状态
	private Point StartPoint = new Point(0, 0);	//记录鼠标按下去的坐标, new是为了拿到空间, 两个0无所谓的
	//记录动了多少距离,然后给窗体Location赋值,要设置Location,必须用一个Point结构体,不能直接给Location的X,Y赋值
	private Point OffsetPoint = new Point(0, 0);

	public FormThreeShow()
    {
        InitializeComponent();
    }

	private void FormThreeShow_MouseDown(object sender, MouseEventArgs e)
	{
		//如果按下去的按钮不是左键就return,节省运算资源
		if (e.Button != MouseButtons.Left)
		{
			return;
		}
		//按下鼠标后,进入拖动状态:
		IsDragging = true;
		//保存刚按下时的鼠标坐标
		StartPoint.X = e.X;
		StartPoint.Y = e.Y;
	}

	private void FormThreeShow_MouseMove(object sender, MouseEventArgs e)
	{
		//鼠标移动时调用,检测到IsDragging为真时
		if (IsDragging == true)
		{
			//用当前坐标减去起始坐标得到偏移量Offset
			OffsetPoint.X = e.X - StartPoint.X;
			OffsetPoint.Y = e.Y - StartPoint.Y;
			//将Offset转化为屏幕坐标赋值给Location,设置Form在屏幕中的位置,如果不作PointToScreen转换,你自己看看效果就好
			Location = PointToScreen(OffsetPoint);
		}
	}

	private void FormThreeShow_MouseUp(object sender, MouseEventArgs e)
	{
		//左键抬起时,及时把拖动判定设置为false,否则,你也可以试试效果
		IsDragging = false;
	}
}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值