博客
关于我
WinForm实现无边框窗体的拖动
阅读量:529 次
发布时间:2019-03-08

本文共 1215 字,大约阅读时间需要 4 分钟。

如何实现无边框窗体并添加拖动效果

在开发中,当我们将FormBorderStyle属性设置为None时,窗口将失去边框,无法通过拖动标题栏进行移动。这在某些场景下可能会影响用户体验。为了实现类似于传统窗口的拖动效果,我们可以利用PictureBox覆盖Form,并在其基础上定义拖动逻辑。

以下是实现无边框拖动效果的常用技术:

  • 使用PInvoke技术调用系统API我们可以调用Windows API函数来实现拖动效果。以下是相关API:
  • [DllImport("user32.dll")]public static extern bool ReleaseCapture();

    [DllImport("user32.dll")]public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);

    internal static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);

    1. 定义常量在代码中定义以下常量:
    2. public const int WM_SYSCOMMAND = 0x0112;public const int SC_MOVE = 0xF010;public const int HTCAPTION = 0x0002;

      public const int WM_NCLBUTTONDOWN = 0xA1;public const int HT_CAPTION = 0x2;public const int MOUSEWHEEL = 0x020A;

      1. 实现拖动事件处理在PictureBox的MouseDown和MouseMove事件中添加以下逻辑:
      2. private void pictureBoxBackground_MouseDown(object sender, MouseEventArgs e){if (e.Button == MouseButtons.Left){ReleaseCapture();SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);}}

        private void pictureBoxBackground_MouseMove(object sender, MouseEventArgs e){if (e.Button == MouseButtons.Left){ReleaseCapture();SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);}}

        通过以上代码,我们可以实现一个可以拖动的无边框窗体。拖动逻辑通过调用系统API实现,确保了良好的用户体验。

    转载地址:http://bngnz.baihongyu.com/

    你可能感兴趣的文章
    Open-E DSS V7 应用系列之五 构建软件NAS
    查看>>
    Open-Sora代码详细解读(1):解读DiT结构
    查看>>
    Open-Sora代码详细解读(2):时空3D VAE
    查看>>
    Open-Source Service Discovery
    查看>>
    open-vm-tools-dkms : 依赖: open-vm-tools (>= 2:9.4.0-1280544-5ubuntu3) 但是它将不会被安装
    查看>>
    open3d-Dll缺失,未找到指定模块解决
    查看>>
    openai Midjourney代理服务 gpt大模型第三方api平台汇总 支持国内外各种大模型 持续更新中...
    查看>>
    OpenAll:Android打开组件新姿势【仅供用于学习了解ButterKnife框架基本原理】
    查看>>
    OpenASR 项目使用教程
    查看>>
    Openbox-桌面图标设置
    查看>>
    opencart出现no such file or dictionary
    查看>>
    OpenCV 3.1 imwrite()函数写入异常问题解决方法
    查看>>
    OpenCV 4.1.0版drawContours
    查看>>
    Opencv cv2.putText 函数详解
    查看>>
    opencv glob 内存溢出异常
    查看>>
    opencv Hog Demo
    查看>>
    opencv Hog学习总结
    查看>>
    opencv Mat push_back
    查看>>
    opencv putText中文乱码
    查看>>
    OpenCV Python围绕特定点将图像旋转X度
    查看>>