C#无边框控制窗体移动

来源:互联网 发布:java多线程挂起和阻塞 编辑:程序博客网 时间:2024/06/06 01:12

虽然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 表示窗体不可移动            }        }
通过以上代码可以完成 无边框窗体移动!

新手上路 多多指教!

原创粉丝点击