方法一:直接通过修改窗体位置从而达到移动窗体的效果

方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务栏从而移动窗体

方法一

1.定义一个位置信息Point用于存储鼠标位置

private Point mPoint;

2.给窗体等控件增加MouseDown和MouseMove事件

/// <summary>
/// 鼠标按下
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void panel1_MouseDown(object sender, MouseEventArgs e)
{mPoint = new Point(e.X, e.Y);
}/// <summary>
/// 鼠标移动
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void panel1_MouseMove(object sender, MouseEventArgs e)
{if (e.Button == MouseButtons.Left){this.Location = new Point(this.Location.X + e.X - mPoint.X, this.Location.Y + e.Y - mPoint.Y);}
}

方法二:

1.引入下面代码 前提需要引入命名空间using System.Runtime.InteropServices

[DllImport("user32.dll")]
public static extern bool ReleaseCapture();[DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);private const int VM_NCLBUTTONDOWN = 0XA1;//定义鼠标左键按下
private const int HTCAPTION = 2;

2.增加鼠标按下事件发送消息,让系统误以为按下是标题栏

/// <summary>
/// 鼠标按下
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
//为当前应用程序释放鼠标捕获
ReleaseCapture();
//发送消息 让系统误以为在标题栏上按下鼠标
SendMessage((IntPtr)this.Handle, VM_NCLBUTTONDOWN, HTCAPTION, 0);
}

C#:WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置相关推荐

  1. C# WinForm 无边框窗体,加阴影、拖动、改变大小等功能完美实现(自认为是完美的 ^=^)

    关于Winform的无边框窗体实现,网络上有很多大牛文章,这里不赘述.我也是参考网络上的思路,在使用别人的代码基础上,发现和遇到了很多小问题,所以做了改造,以下做个记录,也是给需要的人提供一点思路,如 ...

  2. 再谈winform无边框窗体的鼠标托动与缩放

    在winform经常用到无边框的窗体,原因就是想使自己的程序界面完全的自定义,网上也有过不少的相关资料 今天我发了一下的午的时间整理了一下.觉得还不错,贴出来看看. 为了提高托动的缩放的效率,减少系统 ...

  3. WinForm 无边框窗体 拖动工作区移动窗体

    方案1 : 通过重载消息处理实现.重写窗口过程(WndProc),处理一些非客户区消息(WM_NCxxxx),C#中重写窗口过程不用再调用SetWindowLong API了,直接overide一个W ...

  4. 解决 GTK+/GNOME 3 环境下 Java Swing 程序使用本地 GTK+ 主题时菜单无边框 bug 的方法...

    在 GTK+/GNOME 3 环境下采用默认的 Adwaita 主题时,Java Swing 程序如果使用本地 GTK+ 主题会出现菜单无边框的 bug,这个问题也可能在其他常用的 GTK+ 主题中出 ...

  5. winform自定义窗体边框样式模板(支持四周边框拖拽改变窗体大小,支持鼠标拖动头部移动窗体)

    winform自己的边框已经过时,但小伙伴们又觉得自定义太过麻烦.本文将手把手教你自定义winform边框样式,并提供源代码链接(可直接作为模板使用).话不多说,直接上操作步骤. 先上一张完成截图 一 ...

  6. winform无边框在panel上拖动窗口位置,改变窗口大小

    将窗体的FormBorderStyles属性设置为None 窗体上放一个新的panel,设置Dock属性为Fill 创建变量 private bool isMouseDown = false;//表示 ...

  7. Moonlight iPad全屏无边框串流方法

    环境:iPad + MoonLight 串流PC 问题:iPad无法全屏,有边框 解决办法:将电脑分辨率和MoonLight自定义分辨率调整为iPad原始分辨率 背景:在使用iPad进行MoonLig ...

  8. 无边框对话框拖动改变大小的实现总结

    相同是项目遇到的问题,要求是无边框的对话框要实现鼠标的拖动改变大小.无边框对话框跟有边框的实现肯定不一样喽. 我上网搜到一种方法是: 须要处理下面这三个消息: WM_NCHITTEST  WM_SET ...

  9. 无边框透明窗口设置鼠标穿透与不穿透功能

    一.设置鼠标穿透功能: 1.先设置鼠标穿透.无边框.透明,其中鼠标穿透属性要放在第一个位置设置: this->setAttribute(Qt::WA_TransparentForMouseEve ...

最新文章

  1. 日常工作问题解决:centos7下配置网卡以及查询网卡UUID
  2. 2022年全球及中国建筑隔震系统行业设施布局与十四五应用决策建议报告
  3. 2014年第五届蓝桥杯C/C++ A组国赛 —— 第四题:排列序数
  4. 流程DEMO-补打卡
  5. 给用户权限数据添加缓存
  6. log4j的使用 20220228
  7. sql int 比较_SQL进阶--错题集1
  8. log4net进阶手札(四):保存自定义对象到oracle
  9. ubuntu下oracle数据的导入,Ubuntu下Oracle10g的导入与导出
  10. 混沌工程:Netflix系统稳定性之道
  11. UDP网络程序,客户端和服务端交互原理
  12. 图像梯度-Sobel算子
  13. mysql sql语句面试经典50题_经典sql面试及答案(50)
  14. js字符串去空格回车换行
  15. 工程经济作业1答案_工程经济学1、2、3、4(作业1答案)
  16. 用PaddlePaddle进行图像分割
  17. 谈谈对陀螺仪和加速度传感器的感性认识
  18. android 投屏与反控,大屏也能反控手机了,type-c接口的无线投屏器带来的改变
  19. 玉伯:从前端到体验,如何把格局做大
  20. 微信小程序云开发教程-互联网软件产品开发流程和团队分工

热门文章

  1. flask 实现异步非阻塞----gevent
  2. 当TFS/VSTS遇上Power BI
  3. SAP ABAP规划 使用LOOP READ TABLE该方法取代双LOOP内部表的方法
  4. HDU 1003 Maxsum
  5. System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误
  6. 数组洗牌 Fisher Yates
  7. Java 运算符及优先级
  8. Eclipse里修改SVN的用户名和密码
  9. [COGS 0065][NOIP 2002] 字串变换
  10. Java微信二次开发(九)