程序员的知识教程库

网站首页 > 教程分享 正文

C#知识|无边框的WinForm窗体,如何拖动位置?

henian88 2024-08-13 06:16:41 教程分享 13 ℃ 0 评论

#科技快讯#

哈喽,你好啊,我是雷工!

上一节时练习做了一个简单的登录窗体界面,为了美观设置成了无边框,

当运行起来,发现无边框的窗体无法用鼠标拖动位置,

本节记录通过添加代码实现无边框窗体实现移动,以下为测试笔记。

01 效果展示

1.1、添加代码前,在窗体上按住鼠标左键拖动鼠标,无边框窗体无法被鼠标拖动。

1.2、当添加完相关代码,可以实现用鼠标拖动窗体移动。

02、实现步骤

2.1、MouseDown方法

方法代码:

private void Frm_MouseDown(object sender, MouseEventArgs e)
{
	if (e.Button == MouseButtons.Left)//判断鼠标左键是否被按下
	{
		mouseOff = new Point(-e.X, -e.Y);//得到变量的值
		leftFlag = true;//标记鼠标左键的状态
	}
}

2.2、MouseMove方法

方法代码:

private void Frm_MouseMove(object sender, MouseEventArgs e)//鼠标移动触发MouseMove事件
{
	if(leftFlag)//判断鼠标左键有没有被按下
	{
		Point mouseSet = Control.MousePosition;//获取屏幕中鼠标所在的位置
		mouseSet.Offset(mouseOff.X, mouseOff.Y);//设置移动后的位置
		Location=mouseSet;
	}
}

2.3、MouseUp方法

方法代码:

private void Frm_MouseUp(object sender, MouseEventArgs e)//鼠标左键抬起后触发MouseUp事件
{
	if(leftFlag)
	{
		leftFlag = false;//释放鼠标后标注为false;
	}
}

2.4、登录窗体关联方法

在窗体的事件中关联响应

2.5、创建字段

新建两个字段用来存放鼠标的坐标及鼠标左键的状态

代码如下:

private Point mouseOff;//鼠标移动位置变量
private bool leftFlag;//标签是否为左键

03 后记

通过添加以上代码,并做相应的关联即可实现鼠标拖动无边框的Winform窗体,有兴趣的小伙伴也可以尝试一下;

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表