天天看點

wpf做image的釋放_C# WPF:這次把檔案拖出去

❝ 首發公衆号:Dotnet9作者:沙漠之盡頭的狼 編輯于:成都,2020-12-01

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

wpf做image的釋放_C# WPF:這次把檔案拖出去

拖拽檔案進QuickApp中

本文完成對應的下文:《C# WPF:這次把檔案拖出去!》

提前看效果吧:

wpf做image的釋放_C# WPF:這次把檔案拖出去

拖出檔案

上面效果的代碼很少,xaml中隻注冊事件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做image的釋放_C# WPF:這次把檔案拖出去

百度網盤拖拽下載下傳檔案

上面的功能,程式其實要做不少事情,需要監聽拖放的路徑,得到拖放路徑後,就可以通過原檔案網絡路徑進行下載下傳了,建議閱讀這篇文章,參考拖放下載下傳檔案操作:WPF拖拽檔案(拖入拖出),監控拖拽到哪個位置,類似百度網盤拖拽。

另外,這篇文章對WPF的拖放寫得也不錯,建議閱讀:WPF之DragDrop拖放執行個體。

時間如流水,隻能流去不流回。

首發公衆号:Dotnet9

作者:沙漠之盡頭的狼

編輯于:成都,2020-12-01