WPF 拖放程式設計
為了使目標可以接收拖放,需要設定其屬性:AllowDrop為True
拖放相關事件:DragEnter 是指當滑鼠進入拖放目標邊緣時發生。
步驟:
1.要實現拖放操作,首先必須定義拖放源,DragDrop的DoDragDrop() 將初始化一個拖放源物件並開始拖放操作。通常在滑鼠單擊事件(MouseLeftButtonDown)中呼叫此方法
如:private void lbl_MouseLeftButtonDown()
{
Label lbl=(Label)sender;
DragDrop.DoDragDrop(lbl,lblContent,DragDropEffects.Copy);
}
DragDrop.DoDragDrop(DependencyObject do,object data,DragDropEffects fects )
do 為拖放源物件(必須是依賴物件) 是被拖動的資料的源。
data 拖放資料物件:為源物件提供的資料,即源物件的屬性
fects為拖放的效果
DragDropEffects列舉值:
None 放置目標不接受資料
Copy 將資料複製到放置目標
Move 將拖動源的資料移動到放置目標
Scroll 即將在放置目標中開始滾動或當前正在滾動
All 從拖動源複製,移除資料u,並將其滾動到放置目標中
2.為了防止源拖動過來的資料格式不正確,需要在防止目標的DragEnter事件中進行處理
如:
private void txt_DragEnter(object sender,DragEventArgs e)
{
if(!e.Data.GetDataPresent(DataFormats.Text)
{
e.Effects=DragDropEffects.None;
}else
{
e.Effects=DragDropEffects.Copy;
}
}
3.當放置源到拖放目標後會觸發Drop時間
如:
private void txt_Drop(object sender,DragEventArgs e)
{
txt.Text+=e.Data.GetData(DataFormats.Text);
}
所有的拖放事件(DragEnter,DragLeave,DragOver,Drop)都提供了DragEventArgs型別的引數,該引數包含了與拖放操作相關的重要資訊:
AllowedEffects:獲取DragDropEffects列舉的成員,它制定拖放事件的發起方允許那些操作
Data:獲取一個實現了IDataObject介面的資料物件,該物件包含與對應拖動事件關聯的資料
Effects:獲取或設定目標拖放操作
KeyStates:獲取一個標誌美劇,指示Shift Ctrl 和 Alt 鍵的當前狀態及滑鼠按鈕的狀態
Data屬性包含用於傳輸的資料物件,該物件必須實現IDataObject介面,並提供下面幾種方法:
GetData():檢索制定資料格式的資料物件
GetDataPresent:檢視是否具有制定格式的資料,或者資料是否可以轉換為制定格式
GetFormats:返回一個格式列表,此資料物件中的資料以這些格式儲存,或可以轉換為這些格式
SetData:在此資料物件中儲存指定的資料
DragEventArgs