1. 程式人生 > >WPF實現控制元件拖動

WPF實現控制元件拖動

實現控制元件拖動的基本原理是對滑鼠位置的捕獲,同時根據滑鼠按鍵的按下、釋放確定控制元件移動的幅度和時機。
簡單示例:
在Grid中有一個Button,通過滑鼠事件改編Button的Margin屬性,從而改變Button在Grid中的相對位置。

<Grid Name="gd">
    <Button Width=90 Height=30 Name="btn">button</Button>
</Grid>

為Button控制元件繫結三個事件:滑鼠按下、滑鼠移動、滑鼠釋放

public SystemMap()
{
      InitializeComponent();
      btn.MouseLeftButtonDown += btn_MouseLeftButtonDown;
      btn.MouseMove += btn_MouseMove;
      btn.MouseLeftButtonUp += btn_MouseLeftButtonUp;
}

定義變數+滑鼠按下事件

Point pos = new Point();
void btn_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    Button tmp = (Button)sender;
    pos = e.GetPosition(null);
    tmp.CaptureMouse();
    tmp.Cursor = Cursors.Hand;
}

滑鼠移動事件

void btn_MouseMove(object sender, MouseEventArgs e)
{
     if
(e.LeftButton==MouseButtonState.Pressed) { Button tmp = (Button)sender; double dx = e.GetPosition(null).X - pos.X + tmp.Margin.Left; double dy = e.GetPosition(null).Y - pos.Y + tmp.Margin.Top; tmp.Margin = new Thickness(dx, dy, 0, 0); pos = e.GetPosition(null); } }

滑鼠釋放事件

void btn_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
         Button tmp = (Button)sender;
         tmp.ReleaseMouseCapture();
}

相關推薦

WPF實現控制元件

實現控制元件拖動的基本原理是對滑鼠位置的捕獲,同時根據滑鼠按鍵的按下、釋放確定控制元件移動的幅度和時機。 簡單示例: 在Grid中有一個Button,通過滑鼠事件改編Button的Margin屬性,

JS 實現控制元件拽/

下面是實現控制元件拖拽的完整程式碼。 (function ($) { var move = false; //標記控制元件是否處於被拖動狀態 var dragOffsetX = 0; //控制元件左邊界和滑鼠X軸的差

Android控制元件實現

1.今天突然想到做個實現個控制元件拖動效果,就來試試,一查原來還是很簡單的 2.原理就是實現OnTouchLinstener,然後觸控式螢幕幕時改變控制元件的位置,當然了會有人問OnTouch與OnClick有什麼區別,百度搜一下就知道了,懶得說。。 3.廢

控制元件後,某些事件引起的佈局重置或位置還原問題

自定義了一個imageview控制元件,可以隨意拖動和縮放。 遇到了一個棘手的問題,就是每當拖動完控制元件以後,執行某些操作的時候(比如說觸發虛擬鍵盤),該控制元件的位置就會還原到初始位置。 經過嘗試,問題已經解決, 解決方法是:捕捉ACTION_UP動作,當發現這個動作

安卓控制元件

/** 此文主要有兩大要點 1.控制元件的拖動 2.控制元件同時實現點選事件與拖動事件時的衝突處理 要點地方都有註釋 */ public class extents Activity{ /** Called when the activity is first create

WPF實現控件

實現 原創 mmap markdown and highlight -o event -s 原文:WPF實現控件拖動

C++ Builder 實現控制元件放操作

5.1 實現控制元件拖放操作 拖放是使用者操縱物件的常用的方法。使用者可拖動整個控制元件,或將某一個控制元件(如列表框或樹狀檢視)中的項拖動到另一個控制元件中。 · 開始拖動操作。 ·

WPF中的Canvas上實現控制元件、縮放

   如題,專案中需要實現使用滑鼠拖動、縮放一個矩形框,WPF中沒有現成的,那就自己造一個輪子:)    造輪子前先看看Windows自帶的畫圖工具中是怎樣做的,如下圖:      在被拖動的矩形框四周有9個小框,可以從不同方向拖動來放大縮小矩形框,另外需要注意的是,還有一

C#如何實現控制元件移動

1 //在picturebox滑鼠移動 2 private void picBox_MouseMove(object sender, MouseEventArgs e) 3 { 4 if (MoveFlag) 5 { 6 picBox.Left += Convert.To

WPF自定義控制元件拽到介面報錯-未將物件設定到引用的例項

WPF自定義控制元件拖拽到介面報錯-未將物件設定到引用的例項 若給自定義控制元件註冊了許多屬性,那麼在拖拽使用這個控制元件時可能會引起這個錯誤。原因是控制元件初始化時,各個屬性未被顯式賦值。 解決辦法,給控制元件向外暴漏一初始化的方法,類似於這樣 public void XX

WPF 使用鼠標一個控件的實現[2018.7.15]

ont wpf horizon edit 導致 cal 自己的 進行 sdn 原文:WPF 使用鼠標拖動一個控件的實現[2018.7.15] Q:已經把一個Shape和一個Text

教程:將WPF控制元件轉化為.dll檔案實現控制元件打包重用

最近公司在進行顯控軟體的升級,需要將現有程式的winform介面升級為WPF。由於是剛剛接觸C#和WPF,在開發過程中,自己摸索了一下自定義WPF控制元件的實現方法,在此做個總結。 先通過類庫編譯W

WPF介面控制元件Telerik UI for WPF釋出R2 2019 SP1|實現新的屬性

Telerik UI for WPF擁有超過100個控制元件來建立美觀、高效能的桌面應用程式,同時還能快速構建企業級辦公WPF應用

qt 畫多邊形(實現鼠標節點)

開始 ack set eee del upd tip update lob ---恢復內容開始--- 2018-01-06 這個小例子實現了移動鼠標,鼠標的坐標信息跟隨鼠標移動,多邊形的實現,鼠標點擊可以拖動多邊形點的位置,(其中有個問題?我在QMainWi

正交相機下實現滾輪按鈕,滾動滾輪縮放的功能

pix spa serial ext 分享 內容 onu bject 開始 實現了一個功能,鼠標滾輪鍵按下可以拖動視野內的物體全體(其實是相機自己在移動),滾動滾輪可以縮放內容(其實是改變相機視野大小) 效果如下 代碼奉上 1 using UnityE

C# WPF 歌詞控制元件(支援逐字定位描色效果)

原文: C# WPF 歌詞控制元件(支援逐字定位描色效果) 之前做了一個模仿網易雲歌詞的控制元件,實現了載入網易雲歌詞並能隨音樂播放進度定位歌詞。今天呢將在這個控制元件的基礎上增加逐字定位描色功能,如下圖效果(QQ音樂PC)所示:   我所使用的實現方法很簡單粗暴,把每句歌詞每個字切開,單

WPFのImage控制元件souce引入的方法總結

原文: WPFのImage控制元件souce引入的方法總結   1、後臺程式碼相對路徑新增(若為絕對路徑,換UriKind的屬性即可) BitmapImage testBitmapImage = new BitmapImage(new Uri(@"\bin\Sources\ON_bt

個人筆記005--原生JS實現簡單的滑塊驗證

早上起來後瀏覽網站時看到別人的拖動滑塊驗證,就想著做一個demo,等到有時間把這個優化到到現在的專案(用的是圖片驗證碼)。以下程式碼就是百度之後再修改一下的: <!DOCTYPE html> <html> <head> <meta charset

【C#】WPF音樂控制元件

一、使用SoundPlayer SoundPlayer 只能支援WAV格式的檔案 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.

wpf TabControl控制元件的SelectionChanged方法

對於老手來說很簡單,但是新手我從百度上找了好久沒找到,最後還是去谷歌找到的,哎,萬能的google。 前端介面: <TabControl Margin="0,10,0,0" Name="TabControls" SelectionChanged="TabControl_SelectionChang