實現控制項拖動

2021-07-27 02:02:10 字數 351 閱讀 4947

網上流傳的一種寫法是 利用

releasecapture();   

sendmessage(wm_nclbuttondown,   htcaption,   0);

但這種方法有很大的侷限。

這裡提供的方法,更加直接。

以按鈕為例,讓按鈕來捕獲 滑鼠按下和鬆開的訊息。

然後關鍵就在於滑鼠移動的訊息的處理,如果讓按鈕自身來處理wm_mousemove,是行不通的。

那麼就需要讓父視窗來處理,這裡可以通過建立乙個timer,來代替mousemove,實踐證明效果非常好。

而且這樣去編寫控制項移動,可以輕易得到滑鼠資訊,並控制控制項。舉個例子,這樣我們就能編寫乙個滾動條了。

WPF實現控制項拖動

實現控制項拖動的基本原理是對滑鼠位置的捕獲,同時根據滑鼠按鍵的按下 釋放確定控制項移動的幅度和時機。簡單示例 在grid中有乙個button,通過滑鼠事件改編button的margin屬性,從而改變button在grid中的相對位置。gd 90 height 30 name btn button 為...

C 中如何實現拖動PictureBox控制項

思路是這樣的.得有三個變數.記錄x座標 int xpos 記錄y座標 int ypos 記錄是否按下滑鼠 bool moveflag 在picturebox的滑鼠按下事件裡,記錄三個變數.private void picbox mousedown object sender,mouseeventar...

建立可拖動控制項

using system using system.windows.forms using system.drawing namespace controlcollect.web.controls endregion region 建構函式 構造控制項拖動物件 需要拖動的控制項 public con...