C#创建无边框可拖动窗口

470 阅读1分钟

如果说不想用C#默认窗口样式,我们肯定需要设定无边框窗口。不过无边框窗口无法拖动,要如何实现拖动呢?

其实借助mouseDownmouseUpmouseMove事件即可完成,很简单。

首先右键我们的窗口类-查看代码:

image.png

然后在窗口类中建立这三个变量:

/// <summary>
/// 鼠标按下时在窗口中的x坐标
/// </summary>
private int mouseAtX;

/// <summary>
/// 鼠标按下时在窗口中的y坐标
/// </summary>
private int mouseAtY;

/// <summary>
/// 鼠标是否在窗口上是按下状态
/// </summary>
private bool isMouseDown = false;

然后给窗体添加mouseDown事件,并在函数中添加如下代码:

Cursor = Cursors.SizeAll;
mouseAtX = e.X;
mouseAtY = e.Y;
isMouseDown = true;

再添加mouseMove事件并在函数中写如下代码:

if (isMouseDown)
{
	Left = MousePosition.X - mouseAtX;
	Top = MousePosition.Y - mouseAtY;
}

最后添加mouseUp事件并添加如下代码:

Cursor = Cursors.Default;
isMouseDown = false;

其实就是利用了窗口内部鼠标所在位置和鼠标在屏幕的位置加以计算即可。

这样就完成了:

20210604233207918.gif