本文假定您熟悉下列主题:

  • Windows 窗体列表框控件
  • Windows 窗体事件处理

生成示例的步骤

列表框控件提供了您需要处理的两个拖放事件: DragEnter 和 DragDrop。 当您在控件的边界内拖动对象时,便会发生DragEnter 事件;该事件用于确定当前拖动的对象是不是您要放到控件上的对象。 在将一个或多个文件拖到控件上时,需要处理此事件。 这使得在将对象拖到控件上方时,能够根据所拖动的对象显示相应的图标。 将拖动的对象释放到控件上时,会发生DragDrop 事件。 通过处理此事件可以检索对象。 Data 对象用于检索数据。

Data 对象的 GetData 方法返回一个字符串数组,该数组包含拖到该列表框控件中的文件的完整路径名。 您可以使用此文件路径信息来执行需要对文件执行的任何操作。 例如,可以使用 System.IO 命名空间中的类来打开并读取文件、移动文件或将文件复制到一个新位置。 在此示例中,您只是添加了拖到列表框控件中的文件的完整路径。

若要在 Visual C# .NET 应用程序中提供文件拖放功能,请按以下步骤操作:

  1. 在 Visual C# .NET 中新建一个 Windows 窗体应用程序。默认情况下将创建 Form1。
  2. 使用工具框向 Form1 添加一个列表框控件。
  3. 在“属性”窗口中,将该列表框控件的 AllowDrop 属性更改为 True,以允许将对象拖到控件上。
  4. 在解决方案资源管理器中,右键单击 Form1,然后单击查看代码
  5. 若要处理 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;
    }
  6. 若要处理 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]);
    }
  7. 若要将这两个事件处理程序与控件事件相关联,请将以下代码添加到 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);
  8. 生成并运行该项目。
  9. 将一个或多个文件从桌面或另一文件夹拖到列表框控件中。 您会注意到,文件的完整路径添加到了列表框控件中。

参考

有关更多信息,请参见下面的 Microsoft Developer Network (MSDN) Web 站点:

属性

文章编号: 307966 - 最后修改: 2007年5月13日 - 修订: 1.1
这篇文章中的信息适用于:
  • Microsoft Visual C# .NET 2002 标准版
关键字:
kbhowto kbhowtomaster KB307966
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

HOW TO: 在 Visual C# .NET 应用程序中提供文件拖放功能的更多相关文章

  1. 在.NET程序中实现HttpServer功能

    亲爱的下午茶   博客园 首页 新随笔 联系 订阅 管理 随笔-6  文章-0  评论-10  在.NET程序中实现HttpServer功能   最近在实现一个可视化数据解析工具,需要在Wpf程序中实 ...

  2. 微信小程序中悬浮窗功能的实现(主要探讨和解决在原生组件上的拖动)

    问题场景 所谓悬浮窗就是图中微信图标的按钮,采用fixed定位,可拖动和点击. 这算是一个比较常见的实现场景了. 为什么要用cover-view做悬浮窗?原生组件出来背锅了~ 最初我做悬浮窗用的不是c ...

  3. 小程序中内容审核功能的使用(后台使用thinkPHP5.1)

    本文包含文本和图片的检测 //接收要检测的文本内容并调用检测方法 public function textCheck(Request $request){ //内容安全识别 $data['conten ...

  4. 查看.NET应用程序中的异常(上)

    内存转储是查明托管.NET应用程序中异常的原因的一种极好的方法,特别是在生产应用程序中发生异常时.当您在无法使用Visual Studio的应用程序中跟踪异常时,cdb和sos.dll的使用技术就变成 ...

  5. Fastreport使用经验(转)在Delphi程序中访问报表对象

    Fastreport使用经验(转) 在Delphi程序中访问报表对象 最基本的方法就是frxReport1.FindObject. 然后把返回的对象强制转换成它的类型,当然,在报表中必须真的有这么个东 ...

  6. visual studio 开发linux程序

    VisualGDB支持Linux的原理是,通过ssh连接到Linux系统上通过ssh给linux下达命令 . (类似visualgdb的有windgb  ,这2个都是商业软件.) Visual GDB ...

  7. win7 Visual Studio 2008 安装程序时出现“ 加载安装组件时遇到问题。取消安装。”处理方法

    win7 Visual Studio 2008 安装程序时出现“ 加载安装组件时遇到问题.取消安装.”处理方法 vs2008试用期到期,卸载.重新安装都会出现“ 加载安装组件时遇到问题.取消安装.”无 ...

  8. visual studio 2010 winform程序不能添加对system.web的引用

    visual studio 2010 winform程序不能添加对system.web的引用[转载] 需要引用到System.Web.发现没有“System.Web”.在通过“浏览”方式,找到该DLL ...

  9. C运行时库(C Run-time Library)详解(提供的另一个最重要的功能是为应用程序添加启动函数。Visual C++对控制台程序默认使用单线程的静态链接库,而MFC中的CFile类已暗藏了多线程)

    一.什么是C运行时库 1)C运行时库就是 C run-time library,是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些库中的函数. 2)C 语言是所谓的“ ...

随机推荐

  1. Linux 安装Ruby详解(在线和离线安装)

    很多时候我们会发现,真实的生成环境很多都没有外网,只有内网环境,这个时候我们又需要安装Ruby,则不能提供yum命令进行在线安装了,这个时候我们就需要下载安装包进行离线安装.本文主要简单介绍如果离线安 ...

  2. Oracle 学习之exists

    不相关子查询:子查询的查询条件不依赖于父查询的称为不相关子查询.相关子查询:子查询的查询条件依赖于外层父查询的某个属性值的称为相关子查询,带EXISTS 的子查询就是相关子查询EXISTS表示存在量词 ...

  3. C# DataTbale详细操作

    1.创建DataTable对象 DataTable dt = new DataTable("Table_AX"); 2.为DataTable创建列 //方式一(我觉得这种好) dt ...

  4. python偏函数的运用

    摘要:python的设计核心原则就是简洁——在这种原则的指导下,诞生了lambda表达式和偏函数:二者都让函数调用变得简洁.本文主要为你介绍偏函数的应用. 1.为什么要使用偏函数 如果我们定义了一个函 ...

  5. Django---简单from表单提交

    表单提交可能会报错,注意一行代码就可以解决: 简单配置路由: 简单表单提交: <form action="/index/" method="post"&g ...

  6. Nginx配置项优化详解(转)

    (1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2 如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor / ...

  7. 公司HBase基准性能测试之准备篇

    本次测试主要评估线上HBase的整体性能,量化当前HBase的性能指标,对各种场景下HBase性能表现进行评估,为业务应用提供参考. 测试环境 测试环境包括测试过程中HBase集群的拓扑结构.以及需要 ...

  8. win10中强制vs2015使用管理员启动

    文章转自: win10中强制vs2015使用管理员启动   首先,和网上流传的版本一样,需要做这下面这两步: 1. 打开VS快捷方式的属性对话框.   2.勾选“用管理员身份运行”   现在,你双击V ...

  9. 原生JS实现全选,反选

    无样式,比较丑 <!DOCTYPE html><html><head><meta charset="UTF-8"><title ...

  10. iOS UIScrollView 3种分页方法,间隔实现

    基础知识参考 http://tech.glowing.com/cn/practice-in-uiscrollview/ https://stackoverflow.com/questions/9367 ...