一 拖放操作
拖放操作Drag and Drop是兩個窗口之間傳遞數據的一種手段。
1 拖放操作兩部分:拖Drag、放Drop
幾個術語:
① 源窗口:發(fā)起拖拽StartDrag;
② 目標窗口:接受拖放AcceptDraop;
③ 拖拽物:即傳輸的數據DataObject;
2 拖放的數據類型
① 純文本;
② 富文本;
③ 圖片;
④ URL等;
二 拖放的數據類型
拖放的數據類型,常見的有:
① 純文本;
② 圖片;
③ 富文本/帶格式文本;
④ 超鏈接/文件路徑等。
觀察拖放物種的數據類型:
string[] formats=e.Data.GetFormats();foreach(string fmt in formats){ Console.WriteLine("格式:"+fmt);}
一般來說,應用程序只接受固定的類型。
例如:
PhotoShop:接受圖片數據/文件路徑;
NotePad:接受純文本數據;
Word:接受文本、HTML、圖片、文件路徑、超鏈接。
在DragEnter事件處理中,檢查和判斷數據類型。
在DragEnter事件處理中,檢測和判斷數據類型。
if(e.Data.GetDataPresent("System.String")){ e.Effect=DragDropEffects.All;}
如果未設置,則e.Effect的默認值為None。
注意:
GetDataPresent重載2個版本:
GetDataPresent(string format);
GetDataPresent(Type type);
也可以傳typeof(string)將一個類型名傳入。
如果不理解typeof的用法,可以用字符串形式。
三 復制與移動
拖放的操作類型:
① None無操作;
② Copy復制;
③ Move移動;
④ All 任意;
一般地,拖放時按住CTRL鍵,表示復制;
在復制操作是,光標下方先生一個加號;
在操作完成時,通知源窗口操作的類型:
void panel1_DragDrop(sender,e)
{
string str=(string)e.Data.GetData(typeof(striing));
e.Effect=DragDropEffects.Copy;
}
這僅僅是一個提示,具體的后續(xù)操作由源窗口的自己決定。
四 接受文件拖放
判斷拖放的數據類型“FileDrop”:
如果不確定格式,可以先打印檢查一下:
string[] formats=e.Data.GetFormats();foreach(string fmt in formats){ Console.WriteLine("格式:"+fmt);}
取得拖拽的數據:
object dragData=e.Data.GetData(“FileDrop”);
Winform 內部已經對數據作了轉換,轉成C#里的類型,如果不確定,可以單步調試檢查一下:
string[] files=(string[])dragData;
該文章在 2024/10/30 15:07:26 編輯過