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;
    }

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

相关推荐
C+-C资深大佬15 分钟前
C++数据类型
开发语言·c++·算法
ID_1800790547320 分钟前
日本乐天商品详情API接口的请求构造与参数说明
开发语言·python·pandas
派大鑫wink27 分钟前
【Day34】Servlet 进阶:会话管理(Cookie vs Session)
java·开发语言·学习方法
猫天意41 分钟前
【深度学习小课堂】| torch | 升维打击还是原位拼接?深度解码 PyTorch 中 stack 与 cat 的几何奥义
开发语言·人工智能·pytorch·深度学习·神经网络·yolo·机器学习
crossaspeed1 小时前
Java-线程池(八股)
java·开发语言
niaiheni2 小时前
PHP文件包含
开发语言·php
初次见面我叫泰隆2 小时前
Qt——1、初识Qt
开发语言·c++·qt
Arms2062 小时前
python时区库学习
开发语言·python·学习
无名的小三轮2 小时前
第二章 信息安全概述
开发语言·php
清水白石0082 小时前
深入 Python 对象模型:PyObject 与 PyVarObject 全解析
开发语言·python