在winform程序裡面,有時候我們需要移動沒有標題欄窗體或是窗體內的控件,用幾個事件如鼠標單擊,移動,等再加上坐標的計算可以完成這一功能,但是最近發現了一個API函數,可以非常簡單方便的完成這個功能。如下:
代碼 [DllImportAttribute("user32.dll")]
在使用這兩個函數時就導入using System.Runtime.InteropServices;
如下使用:
ReleaseCapture();
SendMessage(this.Handle, 0xA1, 0x2, 0);
這裡面除this.Handle參數外其它的不需改變。例如我們給窗體定義一個MouseDown事件:
this.MouseDown += new MouseEventHandler(MyBaseControl_MouseDown);
那麼就可以在點擊窗體的任何一點而進行拖動操作。事件內代碼如:
代碼 1 protected void MyBaseControl_MouseDown(object sender, MouseEventArgs e)
如果用於運行時的某個控件,則可以把上面的代碼放入此控件的MouseDown事件中,只是SendMessage(this.Handle, 0xA1, 0x2, 0);中的
this.Handle參數應改為此控件的Handle,如this.button1.Handle即可實現。