博客
关于我
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/

    你可能感兴趣的文章
    PCA---主成成分分析
    查看>>
    PCA和自动编码器:每个人都能理解的算法
    查看>>
    pca算法
    查看>>
    PCA降维demo
    查看>>
    SharePoint 2013 图文开发系列之定义站点模板
    查看>>
    PCB生产流程详解-ChatGPT4o作答
    查看>>
    PCB设计十条黄金法则
    查看>>
    SpringSecurity框架介绍
    查看>>
    PCI Express学习篇:Power Management(二)
    查看>>
    pcie握手机制_【博文连载】PCIe扫盲——Ack/Nak 机制详解(一)
    查看>>
    pcm转wav的方法及代码示例
    查看>>
    PC史上最悲剧的16次失败
    查看>>
    PC端恶意代码分析Lab1.1-5.1,从零基础到精通,收藏这篇就够了!
    查看>>
    PC端稳定性测试探索
    查看>>
    PC端编辑 但能在PC端模拟移动端预览的富文本编辑器
    查看>>
    PDB文件:每个开发人员都必须知道的
    查看>>
    springMVC学习(二)
    查看>>
    Pdfkit页眉和页脚
    查看>>
    PDF中的Pandoc语法突出显示不起作用
    查看>>
    pdf从结构新建书签_在PDF文件中怎样创建书签
    查看>>