無聊寫個C#移動窗體的封裝類

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

演示代碼下載 點擊打開鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章