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

  • 首发公众号:Dotnet9
  • 做者:沙漠之尽头的狼
  • 编辑于:成都,2020-12-01

回顾上篇文章:C# WPF:把文件给我拖进来!!!html

拖拽文件进QuickApp中

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

微信公众号:Dotnet9

相关文章
相关标签/搜索