C#鼠标任意拖动PictureBox等控件(使用API ReleaseCapture SendMessage)

C#鼠标任意拖动PictureBox等控件(使用API ReleaseCapture SendMessage)今天,有个网友询问:C#中,如何随意拖动PictureBox?看到这个问题,我自然而然就联想到了以前的拖动无边框窗体的实现上,其实,不只是PictureBox,基本上所有的控件都可以被拖动。实现,就是利用Windows的API函数:SendMessage和ReleaseCapture即可了,代码很简单。核心代码如下:constuintWM_SYSCO…

大家好,又见面了,我是你们的朋友全栈君。

今天,有个网友询问:

C#中,如何随意拖动PictureBox?

看到这个问题,我自然而然就联想到了以前的拖动无边框窗体的实现上,其实,不只是PictureBox,基本上所有的控件都可以被拖动。

实现,就是利用Windows的API函数:SendMessage 和 ReleaseCapture 即可了,代码很简单。

C#鼠标任意拖动PictureBox等控件(使用API ReleaseCapture SendMessage)C#鼠标任意拖动PictureBox等控件(使用API ReleaseCapture SendMessage)

核心代码如下:

const uint WM_SYSCOMMAND = 0x0112;  
const uint SC_MOVE = 0xF010;
const uint HTCAPTION = 0x0002;

[DllImport("user32.dll",   EntryPoint="SendMessageA")]  
  private static extern int SendMessage(IntPtr hwnd, uint wMsg, uint wParam, uint lParam);  
  [DllImport("user32.dll")]  
  private static extern int ReleaseCapture();   

void PictureBox1MouseDown(object sender, MouseEventArgs e)
{
    ReleaseCapture();
    SendMessage((sender as Control).Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
}
    

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137866.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月1日 上午11:16
下一篇 2022年6月1日 上午11:16


相关推荐

  • 网页版扫雷

    网页版扫雷新建一个空 html 文件 粘贴下面的代码 保存后 用浏览器打开就可以玩了 兼容 IE10 DOCTYPE tml htmllang en head metacharset UTF 8 title 扫雷 title style container margin auto width 960px panel posit style metacharset UTF 8 head htmllang en

    2026年3月18日
    2
  • docker 入门_docker高级教程

    docker 入门_docker高级教程一、docker概述1.什么是dockerDocker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app),更重要的是容器性能开销极低。Docker从17.03版本之后分为CE(CommunityEdition:社区版)和E..

    2022年10月15日
    4
  • PEiD–什么都没发现

    PEiD–什么都没发现什么都没发现加密或加壳

    2025年7月13日
    5
  • 操作系统概念(导论)

    操作系统概念(导论)SDU考试特别提醒:整无语了,遇到hmb老师出题就躺平了吧。八个论述两个计算(死锁检测、硬盘访问),论述题感觉像考研题,基本是结合xx谈谈xx这样。分数直接爆炸,心累了,呜呜。操作系统(概念)

    2022年7月1日
    28
  • android游戏引擎andengine学习系列三:绘制游戏虚拟摇杆

    android游戏引擎andengine学习系列三:绘制游戏虚拟摇杆如何高效的学习,这才是我们最值得去学习的。  andengine中绘制虚拟游戏摇杆非常简单,只需要实现AnalogOnScreenControl模拟摇杆类,在设置一些属性即可。先看效果图:左边的摇杆是控制精灵上下左右移动,右边的摇杆空值精灵的旋转。代码结构跟andengine学习系列二一样,其中很多注释在系列二中有说明,在该章内便不多复述。onLoadEngine()方法:

    2025年12月10日
    5
  • SpringBoot——解决application.properties文件不生效的问题

    SpringBoot——解决application.properties文件不生效的问题SpringBoot——解决application.properties文件不生效的问题

    2022年4月23日
    241

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号