本文介绍如何在 Visual C# 应用程序中提供文件拖放功能。
原始产品版本: Visual C++
原始 KB 数: 307966
总结
本文概述的分步过程演示如何在 Visual C# 应用程序中提供文件拖放功能。 ListBox
控件用作文件拖放过程的目标。
要求
此列表概述了所需的推荐硬件、软件、网络基础结构和服务包:Visual C# 。
本文假定你熟悉以下主题:
Windows Forms ListBox control
Windows Forms event handling
生成示例的步骤
ListBox 控件提供两个需要处理的拖放事件: DragEnter
和 DragDrop
。 在 DragEnter
控件的边界内拖动对象时,将发生该事件,该事件用于确定是否要拖动的对象是要允许在控件上删除的对象。 对于将文件或文件拖动到控件的情况,可以处理此事件。 这允许在将对象拖动到控件上时显示相应的图标,具体取决于正在拖动的对象。 在 DragDrop
控件上释放正在拖动的对象时发生该事件。 处理此事件以检索对象。 Data 对象用于检索数据。
Data 对象的 GetData
方法返回一个字符串数组,其中包含拖动到 ListBox
控件的文件的完整路径名称。 可以使用此文件路径信息对文件执行所需的任何操作。 例如,可以使用命名空间中的 System.IO
类打开和读取文件、移动文件或将文件复制到新位置。 在此示例中,只需向拖动到 ListBox
控件的文件添加完整路径。
若要在 Visual C# 应用程序中提供文件拖放功能,请执行以下步骤:
在 Visual C# .NET 或 Visual C# 2005 中创建新的Windows 窗体应用程序。 Form1 默认创建。
使用工具箱将控件添加到
ListBox
Form1。在 “属性” 窗口中,将
AllowDrop
控件的属性ListBox
更改为 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]); }
若要将两个事件处理程序与控件事件相关联,请在调用
InitializeComponent
后在Form1
构造函数中添加以下代码:this.listBox1.DragDrop += new System.Windows.Forms.DragEventHandler(this.listBox1_DragDrop); this.listBox1.DragEnter += new System.Windows.Forms.DragEventHandler(this.listBox1_DragEnter);
生成并运行该项目。
将一个或多个文件从桌面或其他文件夹拖动到 ListBox 控件。 文件的完整路径将添加到
ListBox
控件。
参考
有关详细信息,请参阅以下网站: