C#无边框控制窗体移动

虽然C#自带有边框,但是在开发过程中那个边框并不是很好看,当我们不使用那个边框的时候,那么就会面临一个问题,没有C#自带的边框了,那么窗体怎么进行移动呢?


这涉及到C#的三个事件:

1.MouseDown : 鼠标单击事件

2.MouseMove : 鼠标经过事件

3.MouseUp : 鼠标抬起事件

在写的时候依然是这三个顺序:

首先设置两个全局变量:

 Point mouseOff;//用于获取鼠标位置
 bool leftFlag;//移动标识

然后写第一个事件:

private void MainForm_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)//判断是否单击的是左键
            {
                mouseOff = new Point(e.X,e.Y);//获取当前鼠标位置
                leftFlag = true;//用于标记窗体是否能移动(此时鼠标按下如果说用户拖动鼠标则窗体移动)
            }
        }
第二个事件:

private void MainForm_MouseMove(object sender, MouseEventArgs e)
        {
            if (leftFlag)
            {
		//用当前鼠标的位置 - 之前获取的鼠标位置 = 用户移动窗体的距离 
		//Location: 设置或获取窗体左上角位置
                Location = new Point(Control.MousePosition.X - mouseOff.X, Control.MousePosition.Y - mouseOff.Y);
            }
        }

第三个事件:(此时移动已经完成 但是如果不把leftFlag标识一下,则会继续移动)

private void MainForm_MouseUp(object sender, MouseEventArgs e)
        {
            if (leftFlag)
            {
                leftFlag = false; //释放鼠标标识为false 表示窗体不可移动
            }
        }
通过以上代码可以完成 无边框窗体移动!

新手上路 多多指教!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值