WPF鼠标拖放功能(拖放图片,文本)

简介: 对于拖放操作有两个方面:源和目标。为了创建拖放源,需要在某个位置调用DragDrop.DoDragDrop()方法初始化拖放操作。此时确定拖动操作的源,搁置希望移动的内容,并指明充许什么样的拖放效果(复制,移动等)。

      对于拖放操作有两个方面:源和目标。为了创建拖放源,需要在某个位置调用DragDrop.DoDragDrop()方法初始化拖放操作。此时确定拖动操作的源,搁置希望移动的内容,并指明充许什么样的拖放效果(复制,移动等)。

      通常会在响应PreviewMouseDown或MouseDown事件时,调用DoDragDrop()方法。

      而接收的元素需要将它的AllowDrop属性设置为true,还需要通过处理Drop事件来处理数据。

 前台代码:

     < Grid >
         < Grid.RowDefinitions >
             < RowDefinition  Height ="*" ></ RowDefinition >
             < RowDefinition  Height ="*" ></ RowDefinition >
         </ Grid.RowDefinitions >
         < Grid.ColumnDefinitions >
             < ColumnDefinition  Width ="*" ></ ColumnDefinition >
             < ColumnDefinition  Width ="*" ></ ColumnDefinition >
         </ Grid.ColumnDefinitions >
         < TextBox  Name ="source"  Grid.Row ="0"  Background ="Purple"  Foreground ="White"  MouseDown ="source_MouseDown" >博客园:www.cnblogs.com </ TextBox >
         < Image  Source ="http://static.cnblogs.com/images/logo_small.gif"  Grid.Column ="1"  Stretch ="None"  MouseDown ="Image_MouseDown" ></ Image >
         < Label  Name ="target"  Grid.Row ="1"  Background ="YellowGreen"  AllowDrop ="True"  Drop ="OnDrop" >文本拖到这里 </ Label >
         < Image  Name ="targetImg"  Grid.Row ="1"  Grid.Column ="1"  AllowDrop ="True"  Drop ="targetImg_Drop_1"  Stretch ="None"  Source ="http://www.baidu.com/img/baidu_sylogo1.gif" ></ Image >
     </ Grid >

 

后台代码:

        ///   <summary>
        
///  文本源数据
        
///   </summary>
         private  void source_MouseDown( object sender, MouseButtonEventArgs e)
        {
            TextBox objText = sender  as TextBox;
            DragDrop.DoDragDrop(objText, objText, DragDropEffects.Copy);
        }

         ///   <summary>
        
///  图片源数据
        
///   </summary>
         private  void Image_MouseDown( object sender, MouseButtonEventArgs e)
        {
            Image objImage = sender  as Image;
            DragDrop.DoDragDrop(objImage, objImage.Source, DragDropEffects.Copy);
        }


         ///   <summary>
        
///  目标位置
        
///   </summary>
         private  void OnDrop( object sender, DragEventArgs e)
        {
             if (e.Data.GetDataPresent(DataFormats.Text))
                e.Effects = DragDropEffects.Copy;
             else
                 return;

             this.target.Content = e.Data.GetData(DataFormats.Text);
        }


         private  void targetImg_Drop_1( object sender, DragEventArgs e)
        {
            e.Data.GetFormats();
             if (e.Data.GetDataPresent( " System.Windows.Media.Imaging.BitmapFrameDecode "))
                e.Effects = DragDropEffects.Copy;
             else
            {
                 return;
            }
             //  targetImg.Source = (ImageSource)e.Data.GetData("System.Windows.Media.Imaging.BitmapFrameDecode");
            ((Image)sender).Source = (ImageSource)e.Data.GetData( " System.Windows.Media.Imaging.BitmapFrameDecode ");
        }

 

     如果不知道拖放源数据是什么数据类型,可以使用实现了IDataObject接口的GetFormats()方法。如:   e.Data.GetFormats();  其中Data就实现了IDataObject接口。

 

 

目录
相关文章
|
7天前
|
网络协议 网络安全 C#
基于 WPF 开发的简约,功能强大的终端模拟器
基于 WPF 开发的简约,功能强大的终端模拟器 前言今天大姚给大家推荐一款基于 WPF 开发的简约,功能强大的终端模拟器:ModengTerm。项目介绍ModengTerm是一款基于 WPF 开发的简约,功能强大的终端模拟器,可以用来连接SSH服务器,串口,TCP服务器,Windows命令行等。项目功能支持与SSH服务器,串口,Windows命令行进行交互。可以保存会话信息,方便下次直接登录。支持将终端内容导出为txt和html格式。根据关键字/正则表达式进行历史记录的查找。同步输入功能、历史记录、度可定制化的颜色主题、实时记录日志功能等。项目源码运行设置ModengTerm为启动项目运行:
|
2月前
|
前端开发 C# Windows
在WPF程序中实现PropertyGrid功能
【11月更文挑战第15天】PropertyGrid 是一个用户界面组件,用于直观地查看和编辑对象属性。在 WPF 中可通过组合 Expander 和 DataGrid 实现基本功能,或使用第三方库 PropertyTools 获得更强大特性,包括属性验证和类型特定编辑器。
C#WPF 图片在显示时没有问题,但在运行时图片显示不出来的解决
选中项目,点击右上角的显示全部文件按钮,会将默认隐藏的文件显示出来,选中所需图片,右键,添加到项目,然后选择图片查看属性,生成操作选择resource。完毕。本人目前的解决方案。
521 41
C#WPF 图片在显示时没有问题,但在运行时图片显示不出来的解决
|
5月前
|
C# 机器学习/深度学习 搜索推荐
WPF与机器学习的完美邂逅:手把手教你打造一个具有智能推荐功能的现代桌面应用——从理论到实践的全方位指南,让你的应用瞬间变得高大上且智能无比
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)应用中集成机器学习功能,以开发具备智能化特性的桌面应用。通过使用Microsoft的ML.NET框架,本文演示了从安装NuGet包、准备数据集、训练推荐系统模型到最终将模型集成到WPF应用中的全过程。具体示例代码展示了如何基于用户行为数据训练模型,并实现实时推荐功能。这为WPF开发者提供了宝贵的实践指导。
63 0
|
5月前
|
开发者 C# UED
WPF与多媒体:解锁音频视频播放新姿势——从界面设计到代码实践,全方位教你如何在WPF应用中集成流畅的多媒体功能
【8月更文挑战第31天】本文以随笔形式介绍了如何在WPF应用中集成音频和视频播放功能。通过使用MediaElement控件,开发者能轻松创建多媒体应用程序。文章详细展示了从创建WPF项目到设计UI及实现媒体控制逻辑的过程,并提供了完整的示例代码。此外,还介绍了如何添加进度条等额外功能以增强用户体验。希望本文能为WPF开发者提供实用的技术指导与灵感。
188 0
|
5月前
|
存储 开发者 C#
WPF与邮件发送:教你如何在Windows Presentation Foundation应用中无缝集成电子邮件功能——从界面设计到代码实现,全面解析邮件发送的每一个细节密武器!
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中集成电子邮件发送功能,详细介绍了从创建WPF项目到设计用户界面的全过程,并通过具体示例代码展示了如何使用`System.Net.Mail`命名空间中的`SmtpClient`和`MailMessage`类来实现邮件发送逻辑。文章还强调了安全性和错误处理的重要性,提供了实用的异常捕获代码片段,旨在帮助WPF开发者更好地掌握邮件发送技术,提升应用程序的功能性与用户体验。
84 0
|
5月前
|
API C# Shell
WPF与Windows Shell完美融合:深入解析文件系统操作技巧——从基本文件管理到高级Shell功能调用,全面掌握WPF中的文件处理艺术
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的关键组件,用于构建 Windows 桌面应用程序。WPF 提供了丰富的功能来创建美观且功能强大的用户界面。本文通过问题解答的形式,探讨了如何在 WPF 应用中集成 Windows Shell 功能,并通过具体示例代码展示了文件系统的操作方法,包括列出目录下的所有文件、创建和删除文件、移动和复制文件以及打开文件夹或文件等。
108 0
|
5月前
|
C# Windows 监控
WPF应用跨界成长秘籍:深度揭秘如何与Windows服务完美交互,扩展功能无界限!
【8月更文挑战第31天】WPF(Windows Presentation Foundation)是 .NET 框架下的图形界面技术,具有丰富的界面设计和灵活的客户端功能。在某些场景下,WPF 应用需与 Windows 服务交互以实现后台任务处理、系统监控等功能。本文探讨了两者交互的方法,并通过示例代码展示了如何扩展 WPF 应用的功能。首先介绍了 Windows 服务的基础知识,然后阐述了创建 Windows 服务、设计通信接口及 WPF 客户端调用服务的具体步骤。通过合理的交互设计,WPF 应用可获得更强的后台处理能力和系统级操作权限,提升应用的整体性能。
134 0
|
5月前
|
前端开发 C# 容器
WPF/C#:实现导航功能
WPF/C#:实现导航功能
110 0
|
开发框架 前端开发 JavaScript
WPF+ASP.NET SignalR实现简易在线聊天功能
WPF+ASP.NET SignalR实现简易在线聊天功能
223 0