C#文件拖放操作(DragDrop File)

C#实现文件拖放操作 拖放操作在许多应用程序中都是一个常见的功能,它使用户能够方便地将文件从一个位置拖拽到另一个位置。在C#中,我们可以使用Windows Forms来实现文件的拖放操作。在Form1.cs文件中,我们将添加代码来处理文件的拖放操作。我们在事件处理程序中检查拖入的数据是否是文件,并相应地设置拖放效果。事件在释放拖动的文件时触发。我们在事件处理程序中获取拖放的文件路径,并进行相应的处理。使用上述代码,你可以轻松地实现C#的文件拖放操作。在上述代码中,我们首先在窗体的构造函数中启用了拖放操作,通过将。 阅读详情
C#文件拖放操作(DragDrop File)
转自:http://www.csframework.com/archive/1/arc-1-20110817-1799.htm

首先将窗体的 AllowDrop=True;

C# Code:

//拖文件到窗体上触发DragEnter事件
private void Form1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
   if (e.Data.GetDataPresent(DataFormats.FileDrop))
   e.Effect = DragDropEffects.Link;
   else e.Effect = DragDropEffects.None;
}

//松开鼠标左键触发DragDrop事件
private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
   //其中 label1.Text显示的就是拖进文件的文件名;
   label1.Text = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();
}


必须处理好三种事件:"ItemDrag"、"DragEnter"、"DragDrop"。其中只有第一种事件是在源组件中触发的,另外二种事件是在目标组件中触发的。其中当用户拖动组件触发"ItemDrag"事件;当拖动数据进入目标组件区域触发"DragEnter"事件;当用户在目标组件区域放置拖动的数据触发"DragDrop"事件。下面就根据拖放操作的操作顺序来详细介绍:

(1).开始"拖"(Drag)操作:

通过"DoDragDrop"方法拉开了拖放操作的第一步。"DoDragDrop"方法的语法为:
DoDragDrop ( object data , DragDropEffects allowedEffects ) ;

其中第二个参数来是说明此次拖放操作最后所要实现的效果,因为拖放操作有时实现的效果是把源组件中的内容"拖"到目标组件中,这种效果就是 "Move";有时拖放的效果是在目标组件中加入拖动的数据,对源组件的内容是没有什么影响的,这种效果就是"Copy"。

当然无论是"Move"还是 "Copy",这都要通过具体的编程来实现,设定这些效果只是告诉操作系统,你进行拖放操作的类型,从而为拖放操作设定特定的图标。此例中实现开始"拖放 "操作的具体实现代码如下:

C# Code:


private void treeView1_ItemDrag ( object sender , ItemDragEventArgs e )
{
   string strItem = e.Item.ToString ( ) ;
   //开始进行"Drag"操作
   DoDragDrop ( strItem , DragDropEffects.Copy | DragDropEffects.Move ) ;
}



 

在上面代码中,我们定义的拖放数据类型是字符串,其实拖放的数据类型可以是很多种的,你可以通过修改"DoDragDrop"方法的第一个参数来设定你所要拖放数据类型,譬如:位图或者其他什么。

(2).目标组件允许进行拖放操作:

既然你已经开始进行拖放操作,你还必须告诉你要拖放到的目标组件,要接受你所拖放的数据,"DragEnter"事件正好可以处理。在下列的代码中,我们是通过判断拖放数据类型来确定是否接受拖放,如果是字符串,则可以,否则,则不行。具体代码如下:

C# Code:


private void listView1_DragEnter ( object sender , DragEventArgs e )
{
   //判断是否目前拖动的数据是字符串,如果是,则拖动符串对目的组件进行拷贝
   
   if ( e.Data.GetDataPresent ( DataFormats.Text ) )
   e.Effect = DragDropEffects.Move ;
   else
   e.Effect = DragDropEffects.None ;
}




 

(3).获得拖放的字符串,在目标组件中加入相应的内容:

此步的处理过程是十分明确的,要分成二步来进行,首先要得到拖放的字符串,其次是在目标组件中加入以此字符串为标题的项目。当然还要在相应的位置了。下面就是实现这二步操作的具体代码:

C# Code:


private void listView1_DragDrop ( object sender , DragEventArgs e )
{
   string dummy = "temp" ;
   //获得进行"Drag"操作中拖动的字符串
   string s = ( string ) e.Data.GetData ( dummy.GetType ( ) ) ;
   s = s.Substring ( s.IndexOf ( ":" ) 1 ).Trim ( ) ;
   Position.X = e.X ;
   Position.Y = e.Y ;
   Position = listView1.PointToClient ( Position ) ;
   //在目标组件中加入以此字符串为标题的项目
   listView1.Items.Add ( new ListViewItem ( s , 0 ) ) ;
}



通过对这三个事件的编程,已经完成了由 TreeView组件到ListView 组件的拖放操作。





Ubuntu开发环境配置——持续更新 本文简要介绍了Ubuntu下的开发环境配置流程和问题分析与解决,更多内容持续更新中。 阅读详情

相关推荐

【记录】游戏体验报告怎么写(自我成长篇)

2019年3月更新: 这个倒是不用推翻,我个人虽然写的东西还是有一些偏差的,但是“表哥”说的倒是没毛病的,这篇主要是为了记录用,具体的干货也有,都在图片里,请自行提取 =====18年初原答案 作为一个游戏策划新人,游戏分析可能抓不到点子上,试着总结记录一下游戏体验报告分析的成长(因为水平不同,视野可能也不一样,也许之后几年回头看这些东西都是小儿科或者是错误的,所以只写出当下的想...

eat_human的博客 6万+

C# 文件复制和移动操作(单个文件)

要求:需要将一个文件(如EM1.mdb)复制一份并移动到另外一个目录里,并且复制的那一份名字变为(EM2.mdb) 主要运用到CopyTo CopyTo(String) 将现有文件复制到新文件,不允许覆盖现有文件 重载 CopyTo(String) 将现有文件复制到新文件,不允许覆盖现有文件。 CopyTo(String, Boolean) 将现有...

Mecho的博客 2万+

VS2017配置PCL1.9.1 for win10(超详细)

准备工作 VS2017 自行下载 PCL1.9.1 点击链接跳转Github下载,根据自己的环境选择 win64或win32,作者下载的是:PCL-1.9.1-AllInOne-msvc2017-win64.exepcl-1.9.1-pdb-msvc2017-win64.zip 安装PCL 双击点开PCL-1.9.1-AllInOne-msvc2017-win64.exe,选择Add PCL to the system PATH for all users, 更改安装路径,E:\Progra

malapoa的博客 1146

C#常用文件操作

c#拷贝整个文件夹到指定文件夹下(非递归) public static void CopyEntireDir(string sourcePath, string destPath) { //Now Create all of the directories foreach (string dirPath in Directory.GetDirectories(so

言的专栏 3564

HOPE:基于强化学习的混合策略路径规划器,适用于多样化停车场景

本文提出了一种混合策略路径规划器(HOPE),用于解决自动停车中的路径规划问题。HOPE结合了强化学习(RL)和Reeds-Shepp(RS)曲线,通过动作掩码机制引导RL智能体的探索,并利用Transformer融合环境感知信息与掩码。该方法在多样且复杂的停车场景中实现了超过97%的成功率,并通过真实实验验证了其泛化能力。此外,本文还提出了基于空间与障碍物分布的停车场景难度分级标准,进一步提升了训练与评估的效率。实验结果表明,HOPE在规划成功率和跨场景泛化能力上均优于传统的基于规则算法和朴素强化学习方法

weixin_42783201的博客 1466

变焦跟踪理论基础(如何在变焦过程中保持清晰)

如何在整个变焦过程中一直保持图像的清晰度或焦点是变焦跟踪的主要挑战。 当用户在缩放跟踪的情况下改变缩放时,设备保持对焦。 然而,在没有变焦跟踪的情况下,图像变得失焦,图像在变焦跟踪后由于自动对焦(AF)算法才最终对焦。...................................................

ChenYX的博客 20万+

C# 把一个文件夹下所有文件复制到另一个文件夹下

C# 把一个文件夹下所有文件复制到另一个文件夹下 public static void CopyDirectory(string srcPath, string destPath) {   try {      DirectoryInfo dir = new DirectoryInfo(srcPath);      FileSystemInfo[] fileinfo = dir.Get...

王成天 4014

C#文件拷贝的方法

1、实现功能:打开的文件夹如果和目标文件夹不一样,则将文件拷贝到目标文件夹。3、文件拷贝方法二(CopyTo)2、文件拷贝方法一(Copy)4、文件拷贝方法三(文件流)

qq_27474555的博客 3647

汽车电子电气架构诊断功能开发全流程解析

文章作者是一位在魔都工作的汽车电子工程师,坚持长期主义,并分享了一段关于“钝感力”的文字,强调面对困境的韧劲和耐力,以及不被外界噪音干扰的重要性。文章详细介绍了汽车电子电气架构(EEA)的诊断功能开发流程,涵盖设计、实现、生产、运维及售后五大环节。作者从技术实现维度展开,详细描述了诊断系统架构设计、供应商功能实现、产线集成与标定、云端数据交互以及售后诊断应用场景。文章还总结了技术演进趋势,包括AI融合、OTA 2.0和区块链应用等,强调了标准化协议与工具链在全链路诊断能力中的重要性。最后,作者鼓励读者相信时

Soly_kun的博客 1220

Gephi新手必看:如何用Excel整理CSV数据快速生成网络图(附模板)

本文为Gephi新手提供了一份从Excel数据整理到生成专业网络图的完整指南。详细讲解了如何构建规范的节点表和边表CSV文件,并导入Gephi进行可视化分析。通过实战案例,帮助读者快速掌握利用Excel整理数据、规避常见错误,并运用布局算法与视觉编码,将复杂关系数据转化为直观的网络洞察。

weixin_28487433的博客 389

c语言 文件拖拽,C#文件拖放操作(DragDrop File)

C#文件拖放操作(DragDrop File)首先将窗体的 AllowDrop=True;C# Code://拖文件到窗体上触发DragEnter事件private void Form1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e){if (e.Data.GetDataPresent(DataFormats.FileD...

weixin_29045001的博客 2010

SAP BOM (物料清单) 详解

BOM(Bill of Materials,物料清单)是制造业和生产管理中的一个核心概念。它列出了生产某种产品所需的所有原材料、零部件和子组件的详细信息。在SAP系统中,BOM管理是为了帮助企业在生产过程中更高效地管理物料需求、库存以及生产成本。BOM不仅包括物料的数量和单位,还详细描述了每个物料的规格、标准和在产品中的位置。

我小时候很黑的博客 4245

拖放操作和文件复制小功能

一直都没试过拖放操作的用处,今天试了试,发现真的很好用!! 下面的代码没有打入注释,加入了一个ListBox,当文件拖放上来后,讲内容显示在里面  private void lstFilePath_DragEnter(object sender, DragEventArgs e)         {             if (e.Data.GetDataPresent

fangq的专栏 942

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C#控件开发之DragEnter、DragDrop拖放效果实现

利用TextBox简单的实现DragEnter、DragDrop拖放效果。

884

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Winform 实现文件拖放

首先将需要接收文件的控件的 AllowDrop 属性设置为 True,然后分别添加 DragEnter 和 DragDrop 事件: //当鼠标拖动到控件时发生 private void Form1_DragEnter(object sender, DragEventArgs e) { //表示接收到的数据是文件类型 if (e.Data.GetDataPresent...

weixin_30307921的博客 460

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

如何在DragDrop特殊文件夹时得到相关信息

转自 http://www.cnblogs.com/feiyun0112/archive/2009/02/09/1386802.html 如何在DragDrop特殊文件夹时得到相关信息该论坛有如是贴子,问如何知道在拖放 http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/2a4fc136-3d57-4c64-8

光宇广贞 946

C# WinForm下一步一步实现文件的拖入和拖出

C# WinForm下一步一步实现文件的拖入和拖出   在WinForm实现一个类似资源浏览器的功能,需要实现将WinForm中列出的文件拖出到其他应用程序中或者从其他应用程序中将文件拖入到Winform应用中。网上有一些文章介绍这种功能,但都比较零散,缺少一个完整的例子。为此我编写了一个较完整的实现文件拖入和拖出的例子,并撰写此文一步步讲解如果实现类似功能。      步骤1 放置一个 List...

bruce135lee的专栏 1099

C# WinForm 实现文件的拖入和拖出(拖拽操作)

本文通过五个步骤详细介绍C# WinForm 实现文件的拖入和拖出(拖拽操作),每个步骤都提供相关的示例代码供参考。 步骤1、放置一个 ListView 到 Winform窗体中 并初始化如下属性: [csharp] view plain copy listView.View = View.Details;    listView.Allow

bruce135lee的专栏 1万+

C#文件操作从入门到精通:System.IO核心类、流处理与性能优化实战

文件I/O是软件开发中处理数据持久化的基础技术,其核心原理在于通过流(Stream)机制实现数据的顺序读写,有效管理内存与存储资源。在C#中,System.IO命名空间提供了完整的文件操作支持,从简单的File静态方法到底层的FileStream,开发者需根据文件大小、类型和并发需求选择合适工具。理解缓冲区、异步编程和编码处理能显著提升应用性能与稳定性,尤其在处理大文件、高并发服务器或与外部系统(如数据库、硬件设备)交互时至关重要。本文深入探讨了C#文件操作的核心类、流处理模型及性能优化技巧,并针对内存溢出

weixin_30824479的博客 364

C#窗体实现文件拖拽功能

1、首先要把你的窗体或者空间的AllowDrag属性设置为允许 2、注册DragEnter事件 3、获得文件路径,先通过e.Data.GetFormats()方法获得所有数据格式 4、调用e.GetData()方法根据指定的数据格式获得文件路径 5、有了文件路径,相信一切问题迎刃而解 下面是例子: private void textBox1_DragE...

amjc93299的博客 377

c# 窗体与窗体外的文件互动(拖拽)

大部分控件都有此事件drag相关。 以picturebox为例: pictureBox1.AllowDrop = true;//此属性需要全打出来,不会自动识别添加 private void pictureBox1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPre...

weixin_34291004的博客 381

C#编程学习41:C#成长之路【干货入门,绝对开卷有益】

总结一年来,在C#语言基础知识学习、数据库开发、文件操作及界面搭建等方面的技术储备和积累,希望有助于您的问题解决

m1m2m3mmm的博客 923

C#实现AES文件加密解密工具:原理、代码与实战优化

对称加密是数据安全领域的核心技术,它使用同一密钥进行加密和解密,具有速度快、效率高的特点,尤其适合处理大文件。AES(高级加密标准)作为目前国际通用的对称加密算法,在安全性和性能上达到了良好平衡,广泛应用于文件保护、通信安全等场景。其技术价值在于通过标准化的加密流程,为各类数据提供可靠的机密性保障。在实际工程实践中,结合CBC加密模式和PKCS7填充模式,可以构建出既安全又兼容的文件加密方案。本文以C# WinForm开发为例,深入探讨如何利用AES算法实现一个通用的文件加密解密工具,涵盖密钥派生、IV管理

weixin_33849215的博客 354
上一篇: Ogre学习记录
下一篇: 在foreach 中remove 和add
cool_time
博客等级 码龄19年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值