无聊写个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

演示代码下载 点击打开链接

原创粉丝点击