频道栏目
首页 > 资讯 > C# > 正文

C#WinForm 文件的拖放到指定控件

17-06-19        来源:[db:作者]  
收藏   我要投稿

C#WinForm 文件的拖放到指定控件

一、实现方案

1.首先对拖放到的控件的AllowDrop属性设置为ture。

2.添加控件的DragEnter事件,该事件会在文件被拖放到控件的工作区时触发。

3.在DragEnter事件方法中检查拖放文件的格式,并对拖放文件放置时的效果进行设置(此处设置为DragDropEffects.Link表示将文件链接到控件)。

4.添加控件的DragDrop事件,该事件会在文件放置完成后触发。

5.在DragDrop事件方法中,对文件的路径进行获取。获取时使用GetData方法,指定获取的格式为DataFormats.FileDrop,将返回的object类型的值转换为System.Array。该值的第一个元素即为文件的路径,获取文件路径后就可以完成后续操作了。

二、使用的相关函数

1、DataObject.GetDataPresent 方法

(用于判断获取的文件是否为指定类型或可以转换到指定类型)

重载1:boolGetDataPresent(stringformat, boolautoConvert);

功能说明:确定该文件是否与指定的格式相同,同时指定是否检查该文件能否转换到指定格式。

参数说明:

format:指定的文件格式。

autoConvert:true检查该文件能否转换到指定格式,false仅检查该文件是否为指定格式。

返回值:如果与指定格式相同或者可以转换到指定格式为true,否则为false。

重载2:boolGetDataPresent(stringformat);

功能说明:确定该文件是否与指定的格式相同或者该文件能否转换到指定格式。

参数说明:format:指定的文件格式。

返回值:如果与指定格式相同或者可以转换到指定格式为true,否则为false。

重载3:boolGetDataPresent(Typeformat);

功能说明:确定该文件是否与指定的格式相同或者该文件能否转换到指定格式。

参数说明:format:指定的文件格式。

返回值:如果与指定格式相同或者可以转换到指定格式为true,否则为false。

format所指定的格式参见System.Windows.Forms.DataFormats 以获取预定义的格式。

2、DataObject.GetData方法

(检索与指定格式相关联的数据)

重载1:objectGetData(stringformat, boolautoConvert);

功能说明:检索与指定数据格式相关联的数据,并使用一个布尔值确定是否将数据转换成该格式。

参数说明:

format:指定的文件格式。

autoConvert:true将数据转换至该格式,反之为false。

返回值:与指定格式关联的数据,或为 null。

重载2:objectGetData(stringformat);

功能说明:检索与指定数据格式相关联的数据。

参数说明:format:指定的文件格式。

返回值:与指定格式关联的数据,或为 null。

重载3:objectGetData(Typeformat);

功能说明:检索与指定数据格式相关联的数据。

参数说明:format:指定的文件格式。

返回值:与指定格式关联的数据,或为 null。

format所指定的格式参见System.Windows.Forms.DataFormats 以获取预定义的格式。

三、实现代码

//当某个文件拖入工作区时触发事件

privatevoidpanel1_DragEnter(objectsender, DragEventArgse)

{

if(e.Data.GetDataPresent(DataFormats.FileDrop)) //判断该文件是否可以转换到文件放置格式

{

e.Effect = DragDropEffects.Link; //放置效果为链接放置

}

else

{

e.Effect = DragDropEffects.None; //不接受该数据,无法放置,后续事件也无法触发

}

}

//完成放置后触发

privatevoidpanel1_DragDrop(objectsender, DragEventArgse)

{

stringpath = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString(); //获取文件路径

}

四、其他说明

在这个实现方案中,DragEnter事件必须要有,否则控件无法接收文件。这里判断文件放置格式的GetDataPresent方法仅是判断了该文件能否作为一个Windows 文件放置格式,Windows 窗体不直接使用此格式。(PS:这个放置方式好像能拖进来所有文件,获得文件路径。。我也没试过。)如果需要指定的文件能够拖放进来,例如图片等,可能需要其他方法,在 System.Windows.Forms.DataFormats 中指定的格式并不多。通过Effect属性可以设置文件放置方式,使用Link方式可以用于获得文件路径,None方式无法放置文件。DragDrop这个事件可以不使用,全部写到DragEnter事件方法里也是可以的。

相关TAG标签
上一篇:Java调用Oracle的存储过程、存储函数
下一篇:grep 命令详解
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站