C# WPF:這次把文件拖出去!


  • 首發公眾號:Dotnet9
  • 作者:沙漠之盡頭的狼
  • 編輯於:成都,2020-12-01

回顧上篇文章:C# WPF:把文件給我拖進來!!!

拖拽文件進QuickApp中

本文完成對應的下文:《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

微信公眾號:Dotnet9


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM