wpf textblock可以复制_C# WPF:这次把文件拖出去!

本文介绍了如何在C# WPF应用中实现文件拖出功能,通过简单的XAML事件注册和处理代码,利用操作系统进行文件复制操作。文章还提到了更复杂的拖放下载功能,类似于百度网盘,这需要监听拖放路径并进行文件下载。推荐相关阅读材料以了解更多WPF拖放操作。
摘要由CSDN通过智能技术生成
  • 首发公众号:Dotnet9
  • 作者:沙漠之尽头的狼
  • 编辑于:成都,2020-12-01

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

3827693515e1278c82a8191bac762016.png

本文完成对应的下文:《C# WPF:这次把文件拖出去!》

提前看效果吧:

9d66d1ad15560524619b898b3a34c742.png

上面效果的代码很少,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方法传入,操作系统帮我们处理了文件复制操作。

上面的操作还是太简单,相当于只是对文件在操作系统层面进行了复制,如果要完成类似百度网盘的拖拽下载功能(如下图):

94055c652b10c52508b5d7201dc8d805.png

上面的功能,程序其实要做不少事情,需要监听拖放的路径,得到拖放路径后,就可以通过原文件网络路径进行下载了,建议阅读这篇文章,参考拖放下载文件操作:WPF拖拽文件(拖入拖出),监控拖拽到哪个位置,类似百度网盘拖拽。

另外,这篇文章对WPF的拖放写得也不做,建议阅读:WPF之DragDrop拖放实例。

❝ 时间如流水,只能流去不流回。
  • 首发公众号:Dotnet9
  • 作者:沙漠之尽头的狼
  • 编辑于:成都,2020-12-01

5e074ee9b6583b9ea9a818ad569e1d00.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用以下示例代码来创建WPF TextBlock滚动动画: ```XAML <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <ScrollViewer VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled"> <TextBlock x:Name="myTextBlock" TextWrapping="Wrap" FontSize="24" Text="This is some sample text that will be scrolled horizontally."/> </ScrollViewer> </Grid> </Window> ``` 在代码中,我们使用了一个ScrollViewer控件来包含TextBlock,并将其水平和垂直滚动条的可见性设置为禁用。这将使TextBlock只能在ScrollViewer内滚动。 接下来,我们需要在代码中添加动画。我们将使用DoubleAnimation来使TextBlock水平滚动。以下是示例代码: ```C# using System.Windows; using System.Windows.Controls; using System.Windows.Media.Animation; namespace WpfApplication1 { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DoubleAnimation animation = new DoubleAnimation(); animation.From = 0; animation.To = -myTextBlock.ActualWidth; animation.RepeatBehavior = RepeatBehavior.Forever; animation.Duration = new Duration(new TimeSpan(0, 0, 10)); //设置滚动时间 TranslateTransform trans = new TranslateTransform(); myTextBlock.RenderTransform = trans; trans.BeginAnimation(TranslateTransform.XProperty, animation); } } } ``` 在代码中,我们创建了一个DoubleAnimation对象,并将其From和To属性设置为0和负TextBlock宽度,以使TextBlock水平滚动。我们还将RepeatBehavior属性设置为Forever,以使动画永远重复。最后,我们设置了动画的持续时间,并将其应用于TextBlock的RenderTransform属性。这将使TextBlock滚动。 运行应用程序后,您将看到TextBlock在屏幕上水平滚动。您可以调整动画的持续时间,以使滚动速度更快或更慢。您还可以使用其他动画属性来自定义动画。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值