1. 程式人生 > >c# 實現用滑鼠拖動沒有標題欄的視窗(窗體的任何部分都可實現拖動效果)

c# 實現用滑鼠拖動沒有標題欄的視窗(窗體的任何部分都可實現拖動效果)

上面形式的窗體,實現窗體的任何部分都可實現拖動

首先需要引入非託管程式碼,直接呼叫windows api


        public const int WM_NCLBUTTONDOWN = 0xA1;
        public const int HT_CAPTION = 0x2;

        [DllImportAttribute("user32.dll")]
        public static extern int SendMessage(IntPtr hWnd,
                         int Msg, int wParam, int lParam);
        [DllImportAttribute("user32.dll")]
        public static extern bool ReleaseCapture();

DllImportAttribute微軟官網msdn解釋為:

指示該屬性化方法由非託管動態連結庫 (DLL) 作為靜態入口點公開。

然後再在窗體的Form_MouseDown事件下新增如下程式碼


        private void Form_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                ReleaseCapture();
                SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
            }
        }

還需要注意的是如要使用DllImportAttribute屬性需要引入相應的名稱空間 即 using System.Runtime.InteropServices;

以上程式碼便可實現窗體的任何部分都能實現窗體的拖動效果。