- 首發公衆號:Dotnet9
- 做者:沙漠之盡頭的狼
- 編輯於:成都,2020-12-01
回顧上篇文章:C# WPF:把文件給我拖進來!!!html
本文完成對應的下文:《C# WPF:此次把文件拖出去!》git
提早看效果吧:github
上面效果的代碼不多,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
方法傳入,操做系統幫咱們處理了文件複製操做。ui
上面的操做仍是太簡單,至關於只是對文件在操做系統層面進行了複製,若是要完成相似百度網盤的拖拽下載功能(以下圖):操作系統
上面的功能,程序其實要作很多事情,須要監聽拖放的路徑,獲得拖放路徑後,就能夠經過原文件網絡路徑進行下載了,建議閱讀這篇文章,參考拖放下載文件操做:WPF拖拽文件(拖入拖出),監控拖拽到哪一個位置,相似百度網盤拖拽。.net
另外,這篇文章對WPF的拖放寫得也不作,建議閱讀:WPF之DragDrop拖放實例。code
時間如流水,只能流去不流回。orm
- 首發公衆號:Dotnet9
- 做者:沙漠之盡頭的狼
- 編輯於:成都,2020-12-01