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 组件的拖放操作。





U-Net图像分割实战:从论文解析到PyTorch代码实现 本文深入解析了U-Net图像分割模型的经典架构与核心思想,并提供了从零开始的PyTorch代码实现教程。通过详细拆解编码器-解码器结构、跳跃连接等关键组件,手把手指导读者构建完整的U-Net网络,涵盖数据准备、模型训练、推理部署全流程,是掌握图像分割实战技能的实用指南。 阅读详情

相关推荐

【Labview】对连续采集数据的一种采样方法

图1如图1,想要对这样一个连续信号进行数据点的采集,我根据网上收集到的方法,在此分享一下最终的结果。可以拓展结合文件的写入,完成对连续信号的采集和输出。 已知: 一个连续信号,如图1. 目标: 设定一定采集点个数、采集点时间间隔、和采集周期次数,得到这条连续信号的数据点,如图2. 图2 方法如下: 主要利用的是队列的方法。 在连续信号生成的时候,不断的写入队列,并且清除队列。 ...

李时珍食疗志的博客 1万+

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

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

Mecho的博客 2万+

【车辆仿真】从0开始建立dSPACE RT Simulink工程:输出模拟电平

0基础建议先看下前面的博文,补充基础知识。原来的博文太长太复杂,后续我会逐步梳理改进,去除操作层面的内容,仅关注知识层面,提升系列博文的系统性。【工程环境信息】:上位机:惠普台式PC(Windows 11专业版)下位机(实时机):SCALEXIO RTPC板卡:DS2680。

winnizap的博客 2055

C#常用文件操作

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

言的专栏 3564

无监督低照度增强实战:用ZeroDCE和SCI拯救你的夜间照片(附PyTorch代码)

本文深入探讨了无监督低照度图像增强技术,重点解析了ZeroDCE和SCI两大代表性模型的核心原理与实战应用。通过对比分析两者的技术路径、网络结构及性能特点,并附上详细的PyTorch代码实现,旨在帮助读者掌握无需配对数据即可有效提升夜间照片画质的深度学习解决方案。

git9versioner的博客 489

comsol移动网格_comsol模拟移动的纳秒脉冲激光烧蚀材料,温度场分布,结果总不理想,求助大佬!!...

本人comsol新手一枚,希望大家多多指点研究课题:纳秒脉冲激光刻蚀材料表面想用comsol模拟刻蚀过程中的温度场分布,脉宽为300ns,重复频率100kHz,光斑移动速度为5000mm/s,光斑直径50um,激光功率10W,材料种类为:有机涂层,属性如下目前,采用的是一个移动的高斯面光源x脉冲函数,脉冲函数我用的是一个周期性方波:周期性拓展后,画出来的脉冲图,不知道为什么在0~1s的区间内只有1...

weixin_33288893的博客 4742

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

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

王成天 4014

【图像去噪】论文精读:FM2S: Self-Supervised Fluorescence Microscopy Denoising With Single Noisy Image

论文题目:FM2S: Self-Supervised Fluorescence Microscopy Denoising With Single Noisy Image —— FM2S:单噪声图像自监督荧光显微镜去噪arXiv 2024!显微图像去噪!通过可视化详细的细胞结构和生物过程,荧光显微镜具有显着先进的生物学研究。然而,由于难以精确建模固有噪声和获取干净图像进行训练,这种图像去噪任务往往面临挑战,这限制了大多数现有方法。在本文中,我们提出了一种有效的。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 408

C#文件拷贝的方法

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

qq_27474555的博客 3647

从零开始利用树莓派+扬声器,实现简单的蓝牙音箱,手机连接放歌

树莓派4B自带蓝牙和Wifi, 无需外接 USB dongle;蓝牙最常见的应用是近距离传输数据,比如蓝牙传文件,蓝牙音箱等。正好家里有个普通的usb供电的便携音箱;本文用树莓派蓝牙+普通音箱,实现简单的蓝牙音箱。怎样理解这三层:可以类比Linux网络层:ALSA 类似网络驱动框架A2DP 类似TCP/UDP层PulseAudio 类似HTTP层的服务器,类比Apache而蓝牙连接类似http连接和会话;

南七小僧的学海无涯 2221

【模型实战】MiMo-VL-7B讲解与实战

维度成绩MMMU70.6(图像理解最难测试之一)VideoMME70.8(视频理解标杆)59.4(超越78B参数模型)56.1(超过专用GUI模型)Elo评分开源VLM排名第一(7B~72B)社区热度过去一个月下载超1,600次(RL+SFT)📌一句话概括MiMo-VL 是目前性能最强、推理最稳、体验最佳、生态最全的7B级开源视觉语言模型。

m0_47867638的博客 1198

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

YOLO26涨点改进| TGRS 2026 | 独家创新首发、注意力改进篇| 引入LCGA局部曲率引导注意力,保持局部稳定性的同时突出关键几何区域,含多种创新改进,促进YOLO26所有任务高效涨点

🔥本文提出LCGA(局部曲率引导注意力)模块,通过引入曲率信息改进YOLO26网络模型。LCGA在局部窗口内利用深度卷积构造曲率代理,调制标准窗口注意力,使模型更关注道路、边界等曲线型结构,提升遥感图像超分辨率中的几何保真度。相比普通注意力,LCGA能精准聚焦关键几何区域,减少边缘断裂和轮廓偏移,同时保持较低计算开销。实验表明LCGA显著提升性能,在UCMerced数据集上PSNR提升0.2148dB。文章提供了三种改进方案。

Ai缝合怪、助力小伙伴高效发论文 227

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

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

fangq的专栏 942

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SAP B1中文培訓教材_SDK

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

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

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

884

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Winform 实现文件拖放

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

weixin_30307921的博客 460

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

如何在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、付费专栏及课程。

余额充值