C#无标题栏窗体拖动

要实现C#无标题栏窗体的拖动功能,可以通过以下步骤实现:

  1. 在窗体的构造函数中添加以下代码,以去掉标题栏:

    this.FormBorderStyle = FormBorderStyle.None;

  2. 然后,添加以下代码以处理鼠标按下事件:

    private const int WM_NCHITTEST = 0x0084;
    private const int HT_CAPTION = 0x0002;

    protected override void WndProc(ref Message m)
    {
    switch (m.Msg)
    {
    case WM_NCHITTEST:
    base.WndProc(ref m);
    if ((int)m.Result == HT_CLIENT)
    m.Result = (IntPtr)HT_CAPTION;
    return;
    }
    base.WndProc(ref m);
    }

  3. 最后,通过处理鼠标按下和移动事件来实现拖动功能:

    private bool isDragging = false;
    private Point lastCursor;
    private Point lastForm;

    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
    isDragging = true;
    lastCursor = Cursor.Position;
    lastForm = this.Location;
    }

    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
    if (isDragging)
    {
    int x = lastForm.X - (lastCursor.X - Cursor.Position.X);
    int y = lastForm.Y - (lastCursor.Y - Cursor.Position.Y);
    this.Location = new Point(x, y);
    }
    }

    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
    isDragging = false;
    }

将上述代码添加到你的窗体上即可实现无标题栏窗体的拖动功能。

相关推荐
用户8356290780511 分钟前
C# 高效生成 Word 表格:复杂表格创建实战指南
后端·c#
屠夫4 分钟前
C# LINQ
c#
纵有疾風起17 分钟前
C++——多态
开发语言·c++·经验分享·面试·开源
氵文大师1 小时前
A机通过 python -m http.server 下载B机的文件
linux·开发语言·python·http
封奚泽优1 小时前
下降算法(Python实现)
开发语言·python·算法
笃行客从不躺平2 小时前
遇到大SQL怎么处理
java·开发语言·数据库·sql
郝学胜-神的一滴2 小时前
Python中常见的内置类型
开发语言·python·程序人生·个人开发
g***B7382 小时前
Kotlin协程在Android中的使用
android·开发语言·kotlin
火白学安全2 小时前
《Python红队攻防零基础脚本编写:进阶篇(一)》
开发语言·python·安全·web安全·网络安全·系统安全
光头闪亮亮2 小时前
电子发票解析工具-c#桌面应用开发-DataGridView表格控件使用详解
c#