博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HOW TO: 在 Visual C# .NET 应用程序中提供文件拖放功能
阅读量:6875 次
发布时间:2019-06-26

本文共 2083 字,大约阅读时间需要 6 分钟。

本文假定您熟悉下列主题: 
  • 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. 将一个或多个文件从桌面或另一文件夹拖到列表框控件中。 您会注意到,文件的完整路径添加到了列表框控件中。
 | 

Collapse image参考

有关更多信息,请参见下面的 Microsoft Developer Network (MSDN) Web 站点:
Control.DragEnter 事件
Control.DragDrop 事件
 | 

Collapse image属性

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

转载地址:http://evofl.baihongyu.com/

你可能感兴趣的文章
360金融更新招股书:前三季营收13.8亿 最快月底上市
查看>>
中国公布北京2022年冬奥会企业赞助有关增值税政策
查看>>
四川公安严厉打击盗油犯罪:2018年缴获被盗柴油逾27吨
查看>>
创新智慧矿山解决方案 广纳集团走绿色可持续发展之路
查看>>
中消协警示:有人打“保健品岁末答谢”等幌子行骗
查看>>
品牌不能忽视的数字资产——域名为何在今天依然重要?
查看>>
贴福字、集五福、沾福气!这才是“中国福“的最优雅打开姿势
查看>>
DT时代,大数据常用的软件工具有哪些?
查看>>
十一个关于Netty的经典问答:为何选择Netty?
查看>>
深入浅出 FlatBuffers 之 Schema
查看>>
JavaScript 设计模式 : 生活中的'适配器'和'装饰者'模式
查看>>
Retrofit与Rxjava封装终结者(一)基本用法
查看>>
Weex 在饿了么前端的实践
查看>>
Element源码分析系列3-Button(按钮)
查看>>
ES6零基础教学_解析彩票项目-学习笔记(三)
查看>>
Django2 web实战01-启动项目
查看>>
玩转iOS开发:4.《Core Animation》CALayer的视觉效果
查看>>
Flutter「发布预览版 2」让 iOS 应用至臻完美
查看>>
隐式动画的性能瓶颈
查看>>
30 天精通 RxJS(24): Observable operators - multicast, refCount, publish, share
查看>>