C# 无边框点击任意位置拖动窗体

VS 窗体边框太丑,常常开发时取消边框,但无边框的窗体无法自由拖动,本文介绍如何点击任意位置拖动窗体。

1.定义变量

bool IsDragging = false;    //当前拖拽状态
Point p = new Point(0, 0);  //记录鼠标按下去的坐标
Point offset = new Point(0, 0); //记录动了多少距离

 2.鼠标按下、释放和移动事件 

private void Form1_MouseDown(object sender, MouseEventArgs e)
 {
            if (e.Button != MouseButtons.Left)
                return;

            //当前为拖曳状态
            IsDragging = true;
            p.X = e.X;  //记录坐标X,Y
            p.Y = e.Y; 
 }

 private void Form1_MouseUp(object sender, MouseEventArgs e)
 {

            //当前为不拖曳状态
            IsDragging = false;
 }

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
            if (IsDragging)
            {
                //距离计算:移动的坐标-鼠标按下记录的坐标
                offset.X = e.X - p.X;
                offset.Y = e.Y - p.Y;
                //控件位置
                Location = PointToScreen(offset);
            }
 }

3.无边框窗体双击放大

我的做法是添加一个panel赋予双击事件,

private void panel_DoubleClick(object sender, EventArgs e)
{
            if (this.WindowState == FormWindowState.Maximized)
            {
                this.WindowState = FormWindowState.Normal;
            }
            else
            {
                this.WindowState = FormWindowState.Maximized;
            }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值