欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#无边框控制窗体移动

程序员文章站 2022-07-14 12:17:52
...

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

新手上路 多多指教!

上一篇: ubuntu 18.04 安装docker

下一篇: Netty