无聊写个C#移动窗体的封装类
来源:互联网 发布:python 保存xlsx文件 编辑:程序博客网 时间:2024/06/06 07:10
using System.Runtime.InteropServices;namespace System.Windows.Forms{ class moveform {#region 变量声明 private bool isMouse = false; //记录是否按下 private int mousedownleft = 0; private int mousedowntop = 0; public System.Windows.Forms.Form form1 = null;#endregion /// /// 移动窗口类不使用api移动 /// /// System.Windows.Forms.Form /// 在窗体的构造函数里 moveform mf=new moveform(this) public moveform( System.Windows.Forms.Form winform) { form1 = winform; if (form1==null) { MessageBox.Show(" public System.Windows.Forms.Form对象没有实例化"); return; } else { form1.MouseDown+=new MouseEventHandler(MouseDownEvent); form1.MouseMove+=new MouseEventHandler(MouseMoveEvent); form1.MouseUp+=new MouseEventHandler(MouseUpEvent); } } #region win32 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); public const int WM_SYSCOMMAND = 0x0112; public const int SC_MOVE = 0xF010; public const int HTCAPTION = 0x0002; /// /// 使用api移动 /// /// /// //在窗体的构造函数里 moveform mf=new moveform(this,true) public moveform(System.Windows.Forms.Form form1s,bool win32api) { form1 = form1s; if (form1==null) { MessageBox.Show(" public System.Windows.Forms.Form对象没有实例化"); return; } else { form1.MouseDown += new MouseEventHandler(WinApiMoveEvent); } } private void WinApiMoveEvent(object sender, System.Windows.Forms.MouseEventArgs e) { ReleaseCapture(); SendMessage(form1.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0); } #endregion private void MouseDownEvent(object sender, System.Windows.Forms.MouseEventArgs e) { isMouse = true; mousedownleft = GetMouseXY().X - form1.Left; mousedowntop = GetMouseXY().Y - form1.Top; } private void MouseMoveEvent(object sender, System.Windows.Forms.MouseEventArgs e) { if (isMouse==false) { return; } form1.Left = GetMouseXY().X - mousedownleft; form1.Top = GetMouseXY().Y - mousedowntop; } private void MouseUpEvent(object sender, System.Windows.Forms.MouseEventArgs e) { if (isMouse==true) //如果还是真 { isMouse = false; } } /// /// 获取鼠标坐标 /// /// private System.Drawing.Point GetMouseXY() {
System.Drawing.Point xy = new System.Drawing.Point(System.Windows.Forms.Cursor.Position.X, System.Windows.Forms.Cursor.Position.Y);
return xy; } }}
http://www.cm1212.com
演示代码下载 点击打开链接
- 无聊写个C#移动窗体的封装类
- 写个自己看的,很无聊
- 无聊写了个看电影的程序,
- C# 自定义窗体移动窗体的方法
- c#简单的窗体移动
- 无聊写的无聊东西
- 闲来无事,写了个简单的c#生成静态html文件,封装类
- 无聊写个手势插件
- 今天自己写了个无聊的测试
- 无聊写的杨辉三角类
- 无聊写的
- 无聊时候写的。。。
- 无聊写的压位高精加
- C# 无边框窗体的移动
- C#无边框窗体的移动
- c# 实现无标题栏的窗体移动
- C#无边框窗体的移动
- C# wm_nchisttest(无标题窗体的移动方法)
- .vimc文件在哪里?
- c# 动态获取系统当前日期和时间
- chmod MODE
- Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)!
- 在LINUX 启动时自动启动ORACLE 10G多个实例数据库的方法
- 无聊写个C#移动窗体的封装类
- Editplus编辑器使用CL编译器配置Proc编译环境。
- 面向对象程序设计
- HString
- XP中启动IPv6协议
- 一个计算平方根的简单算法
- java rss lib 评测
- KMP算法详讲
- Ubuntu搭建Eclipse+JDK+SDK的Android