几何尺寸与公差论坛

 找回密码
 注册
查看: 295|回复: 0

winform无边框窗体拖动解决办法

[复制链接]
发表于 2022-12-10 15:00:25 | 显示全部楼层 |阅读模式
在 WinForm 中实现无边框窗体的拖动,可以使用以下步骤:

将窗体的 FormBorderStyle 属性设置为 None,以隐藏窗体边框。
在窗体的 MouseDown 事件中,调用窗体的 Capture 方法来锁定鼠标捕获。
在窗体的 MouseMove 事件中,通过调用窗体的 BeginInvoke 方法来激活一个匿名方法,在该方法中通过调用窗体的 SetDesktopLocation 方法来更新窗体的位置。
在窗体的 MouseUp 事件中,调用窗体的 ReleaseCapture 方法来释放鼠标捕获。
以下是一个简单的例子,展示了如何使用上述步骤实现无边框窗体的拖动:

Copy code
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.FormBorderStyle = FormBorderStyle.None;
    }

    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        this.Capture = true;
    }

    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        if (this.Capture)
        {
            this.BeginInvoke(new MethodInvoker(() =>
            {
                this.SetDesktopLocation(Cursor.Position.X - this.Width / 2, Cursor.Position.Y - this.Height / 2);
            }));
        }
    }

    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
        this.Capture = false;
    }
}
在这个例子中,窗体的 FormBorderStyle 属性被设置为 None,以隐藏窗体边框。在鼠标按下时,调用 Capture 方法来锁定鼠标捕获。在鼠标移动时,通过调用 BeginInvoke 方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-3-28 19:58 , Processed in 0.033043 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表