1. 程式人生 > WINDOWS開發 >WPF 拖放程式設計

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