HOW TO: 在 Visual C# .NET 应用程序中提供文件拖放功能
- Windows 窗体列表框控件
- Windows 窗体事件处理
生成示例的步骤
列表框控件提供了您需要处理的两个拖放事件: DragEnter 和 DragDrop。 当您在控件的边界内拖动对象时,便会发生DragEnter 事件;该事件用于确定当前拖动的对象是不是您要放到控件上的对象。 在将一个或多个文件拖到控件上时,需要处理此事件。 这使得在将对象拖到控件上方时,能够根据所拖动的对象显示相应的图标。 将拖动的对象释放到控件上时,会发生DragDrop 事件。 通过处理此事件可以检索对象。 Data 对象用于检索数据。
Data 对象的 GetData 方法返回一个字符串数组,该数组包含拖到该列表框控件中的文件的完整路径名。 您可以使用此文件路径信息来执行需要对文件执行的任何操作。 例如,可以使用 System.IO 命名空间中的类来打开并读取文件、移动文件或将文件复制到一个新位置。 在此示例中,您只是添加了拖到列表框控件中的文件的完整路径。
若要在 Visual C# .NET 应用程序中提供文件拖放功能,请按以下步骤操作:
- 在 Visual C# .NET 中新建一个 Windows 窗体应用程序。默认情况下将创建 Form1。
- 使用工具框向 Form1 添加一个列表框控件。
- 在“属性”窗口中,将该列表框控件的 AllowDrop 属性更改为 True,以允许将对象拖到控件上。
- 在解决方案资源管理器中,右键单击 Form1,然后单击查看代码。
- 若要处理 DragEnter 事件,请将下面的方法添加到 Windows 窗体设计器在 Form1 类中生成的代码段下面:
private void listBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
if(e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.All;
else
e.Effect = DragDropEffects.None;
} - 若要处理 DragDrop 事件,请将下面的方法添加到 Form1 类中,紧挨在第 5 步中添加的方法后面:
private void listBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
string[] s = (string[]) e.Data.GetData(DataFormats.FileDrop, false);
int i;
for(i = 0; i < s.Length; i++)
listBox1.Items.Add(s[i]);
} - 若要将这两个事件处理程序与控件事件相关联,请将以下代码添加到 Form1 的 InitializeComponent 方法中。 确保将此代码添加到已实例化 ListBox1 后的位置:
this.listBox1.DragDrop += new
System.Windows.Forms.DragEventHandler(this.listBox1_DragDrop);
this.listBox1.DragEnter += new
System.Windows.Forms.DragEventHandler(this.listBox1_DragEnter); - 生成并运行该项目。
- 将一个或多个文件从桌面或另一文件夹拖到列表框控件中。 您会注意到,文件的完整路径添加到了列表框控件中。
参考
属性
这篇文章中的信息适用于:
- Microsoft Visual C# .NET 2002 标准版
关键字: |
kbhowto kbhowtomaster KB307966 |
HOW TO: 在 Visual C# .NET 应用程序中提供文件拖放功能的更多相关文章
- 在.NET程序中实现HttpServer功能
亲爱的下午茶 博客园 首页 新随笔 联系 订阅 管理 随笔-6 文章-0 评论-10 在.NET程序中实现HttpServer功能 最近在实现一个可视化数据解析工具,需要在Wpf程序中实 ...
- 微信小程序中悬浮窗功能的实现(主要探讨和解决在原生组件上的拖动)
问题场景 所谓悬浮窗就是图中微信图标的按钮,采用fixed定位,可拖动和点击. 这算是一个比较常见的实现场景了. 为什么要用cover-view做悬浮窗?原生组件出来背锅了~ 最初我做悬浮窗用的不是c ...
- 小程序中内容审核功能的使用(后台使用thinkPHP5.1)
本文包含文本和图片的检测 //接收要检测的文本内容并调用检测方法 public function textCheck(Request $request){ //内容安全识别 $data['conten ...
- 查看.NET应用程序中的异常(上)
内存转储是查明托管.NET应用程序中异常的原因的一种极好的方法,特别是在生产应用程序中发生异常时.当您在无法使用Visual Studio的应用程序中跟踪异常时,cdb和sos.dll的使用技术就变成 ...
- Fastreport使用经验(转)在Delphi程序中访问报表对象
Fastreport使用经验(转) 在Delphi程序中访问报表对象 最基本的方法就是frxReport1.FindObject. 然后把返回的对象强制转换成它的类型,当然,在报表中必须真的有这么个东 ...
- visual studio 开发linux程序
VisualGDB支持Linux的原理是,通过ssh连接到Linux系统上通过ssh给linux下达命令 . (类似visualgdb的有windgb ,这2个都是商业软件.) Visual GDB ...
- win7 Visual Studio 2008 安装程序时出现“ 加载安装组件时遇到问题。取消安装。”处理方法
win7 Visual Studio 2008 安装程序时出现“ 加载安装组件时遇到问题.取消安装.”处理方法 vs2008试用期到期,卸载.重新安装都会出现“ 加载安装组件时遇到问题.取消安装.”无 ...
- visual studio 2010 winform程序不能添加对system.web的引用
visual studio 2010 winform程序不能添加对system.web的引用[转载] 需要引用到System.Web.发现没有“System.Web”.在通过“浏览”方式,找到该DLL ...
- C运行时库(C Run-time Library)详解(提供的另一个最重要的功能是为应用程序添加启动函数。Visual C++对控制台程序默认使用单线程的静态链接库,而MFC中的CFile类已暗藏了多线程)
一.什么是C运行时库 1)C运行时库就是 C run-time library,是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些库中的函数. 2)C 语言是所谓的“ ...
随机推荐
- linux常用命令大全2--挂载/dpkg/文件系统分析/apt/光盘/关机
挂载一个文件系统 mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 '/ mnt/hda2' 已经存在 umount /dev/hda2 卸载一个叫做hda2 ...
- sphinx配置文件详解
sphinx的配置文件是在配置的时候最容易出错的了: 我们先要明白几个概念: source:数据源,数据是从什么地方来的. index:索引,当有数据源之后,从数据源处构建索引.索引实际上就是相当于一 ...
- 查看UUID的方法
# blkid /dev/sdc1: UUID="6dfada2a-3a79-46b9-8e5d-7e8b39eba0da" TYPE="ext4" /dev/ ...
- PCB器件重叠报错
这几天画一个板子,,有一层器件是可以重叠的, 但是怎么修改规则也没有效果, 尝试把那个检测规则给删除,但是根本删除不掉! 后来发现 直接在规则的 这个选项直接把勾选去掉就可以了!
- 使用不同模板引擎beetl、FreeMarker、Velocity动态解析sql的方法
1. String sql = null;if(null == renderType || renderType.equals(ConstantRender.sql_renderType_beetl) ...
- 利用 bugly 分析应用崩溃
Bugly-Crash监控能让我们及时的掌控应用的Crash,并快速修复.这种情况就在于我们把应用发布出去了,但是用户那边有着各种各样我们想象不到的系统崩溃,我们无法通过简单的控制台捕获错误信息和崩溃 ...
- /usr/bin/ld: i386:x86-64 architecture of input file `command.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `command.o' is incompatible with i386 output 出现这 ...
- js 字符中 带 函数 再传对象参数
不替换 ( .replace(/\"/g, "\\\"") )则会有错误: Uncaught SyntaxError: missing ) after argu ...
- VS2015 中使用 MVC4
最近把机子升级到win10 觉得还是好用, 又看了一个vs最新版,于时就安了个vs2015 可以前MVC4的项目用不起了 System.Web.Mvc这个有叹号,生成还要报错, 看了一下原因找不到4. ...
- 浙江工业大学校赛 小M和天平
小M和天平 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...