程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#拖放技術相關方法和事件

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

編輯:關於C#

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 操作被取消,沒有放置消息

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved