C#拖放技術相關方法和事件

來源:互聯網
上載者:User

1.方法

實現拖放效果時,C#中提供了一個系統方法DoDragDrop方法,用於實現開始拖放操作,該方法由Control類所定義,由於控制項均直接或是間接派生於Control類,因此開發人員可以在任何可視化組件中調用DoDragDrop方法。DoDragDrop方法使用文法如下:

public DragDropEffects DoDragDrop ( Object data,DragDropEffects allowedEffects)

data:使用者所要拖動的資料內容。必須將所要拖動的內容傳入到這個方法的第一個參數位置。

allowedEffects:DragDropEffects枚舉值之一,此類型包含了拖動操作的效果。DragDropEffects枚舉值如表32.8所示。

表32.8   DragDropEffects枚舉值

枚舉值 說明
All        從拖動源複製、移除資料,並將其滾動到放置目標中
Copy    將資料複製到放置目標
Link     將拖動源中的資料連結到放置目標
Move    將拖動源的資料移動到放置目標
None    放置目標不接受該資料
Scroll   即將在放置目標中開始滾動,或當前正在滾動

開發人員在使用DoDragDrop方法時,必須指定參數allowedEffects為表**中的任何一個成員,另外,還可以使用位元運算符,把其中的任何一個成員作為一個完整參數傳入,以得到所需的拖動效果,實現關鍵代碼如下:

DragDropEffects.Copy| DragDropEffects.None

2.事件

C#中提供了一個系統拖放事件,與拖放方法一起使用來達到更好的效果。常用的拖放事件如表所示。

表  拖放事件

名稱 說明
DragEnter                 當使用者在拖放操作過程中首次將滑鼠游標拖到控制項上時,會引發該事件
DragDrop                  在完成拖放操作時發生
GiveFeedback             在執行拖動操作期間發生
DragLeave                 如果使用者移出一個視窗,則引發DragLeave事件
DragOver                   如果滑鼠移動但停留在同一個控制項中,則引發DragOver事件
QueryContinueDrag    在拖放操作過程中,當鍵盤或滑鼠按鍵狀態發生變化時,會引發QueryContinueDrag 事件。QueryContinueDrag事件允許拖動源確定是否應取消拖放操作

 

下面對拖放事件中比較重要的事件進行詳細介紹。

(1)DragEnter事件

當使用者在拖放操作過程中首次將滑鼠游標拖到控制項上時,觸發該事件。

文法:

public event DragEventHandler DragEnter

該事件為DragEventHandler委託類型,該委託是專門設計用以處理控制項的DragEnter、DragDrop、GiveFeedback、DragLeave和DragOver等相關事件的方法。DragEventHandler委託類型的定義文法如下:

public delegate void DragEventHandler(object sender,DragEventArgs e)

該委託封裝的方法必須接受兩個參數,第一個是object類型對象,該對象用來指定拖放目標對象;第二個為DragEventArgs 型別參數e,它主要包含拖動操作的相關資料。DragEventArgs 型別參數e的相關屬性值及說明如表所示。

表 DragEventArgs型別參數e的屬性值及說明

名稱 說明
AllowedEffect    擷取拖動事件的發起方(或源)所允許的拖放操作
Data               擷取IDataObject,它包含與此事件關聯的資料
Effect              擷取或設定拖放操作中目標放置效果
KeyState         擷取Shift、Ctrl 和 Alt鍵的目前狀態以及滑鼠按鍵的狀態
X                   擷取滑鼠指標在螢幕座標系中的x座標
Y                   擷取滑鼠指標在螢幕座標系中的y座標

(2)QueryContinueDrag事件

在拖放操作過程中,當鍵盤或滑鼠按鍵狀態發生變化時,觸發該事件。

文法:

public event QueryContinueDragEventHandler QueryContinueDrag

委託定義文法如下:

public delegate void DragEventHandler(object sender, QueryContinueDragEventArgs e)

該委託封裝的方法必須接受兩個參數,第一個是object類型對象,該對象用來指定為拖放目標對象;第二個為QueryContinueDragEventArgs 型別參數e,它主要包含拖動操作的相關資料。QueryContinueDragEventArgs 型別參數e有一個Action屬性,該屬性的屬性值用來確定是否繼續拖動、放置資料或取消操作。Action屬性值及說明如表32.11所示。

表 QueryContinueDragEventArgs.Action屬性值及說明

名稱 說明
Continue          該操作將繼續
Drop               該操作以放置而告終
Cancel             操作被取消,沒有放置訊息

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.