- 首發公眾號:Dotnet9
- 作者:沙漠之盡頭的狼
- 編輯于:成都,2020-12-01
回顧上篇文章:C# WPF:把檔案給我拖進來!!!

本文完成對應的下文:《C# WPF:這次把檔案拖出去!》
提前看效果吧:

上面效果的代碼很少,xaml中只注冊事件PreviewMouseLeftButtonDown即可:
<Grid MouseMove="Grid_MouseMove" AllowDrop="True" Drop="Grid_Drop" DragEnter="Grid_DragEnter" PreviewMouseLeftButtonDown="Grid_PreviewMouseLeftButtonDown">
事件處理代碼如下:
//處理檔案拽出操作
private void Grid_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
// 目前每個選單由一個Image和TextBlock組成,所以判斷拖拽的是否是一個Image控制元件,其他目標控制元件的拖拽不處理
var img = e.OriginalSource as Image;
if (img == null || img.Tag == null)
{
return;
}
var menuInfo = img.Tag as MenuItemInfo;
if(menuInfo==null)
{
return;
}
#region 拖拽代碼
ListView lv = new ListView();
string dataFormat = DataFormats.FileDrop;
DataObject dataObject = new DataObject(dataFormat, new string[] { menuInfo.FilePath});
DragDropEffects dde = DragDrop.DoDragDrop(lv, dataObject, DragDropEffects.Copy);
#endregion
}
關鍵的是后面的代碼(拖拽代碼,原始碼倉庫路徑),需要將原檔案路徑通過DragDrop.DoDragDrop方法傳入,作業系統幫我們處理了檔案復制操作,
上面的操作還是太簡單,相當于只是對檔案在作業系統層面進行了復制,如果要完成類似百度網盤的拖拽下載功能(如下圖):

上面的功能,程式其實要做不少事情,需要監聽拖放的路徑,得到拖放路徑后,就可以通過原檔案網路路徑進行下載了,建議閱讀這篇文章,參考拖放下載檔案操作:WPF拖拽檔案(拖入拖出),監控拖拽到哪個位置,類似百度網盤拖拽,
另外,這篇文章對WPF的拖放寫得也不做,建議閱讀:WPF之DragDrop拖放實體,
時間如流水,只能流去不流回,
- 首發公眾號:Dotnet9
- 作者:沙漠之盡頭的狼
- 編輯于:成都,2020-12-01
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/229628.html
標籤:WPF

