C#窗体实现文件拖拽功能
1、首先要把你的窗体或者空间的AllowDrag属性设置为允许
2、注册DragEnter事件
3、获得文件路径,先通过e.Data.GetFormats()方法获得所有数据格式
4、调用e.GetData()方法根据指定的数据格式获得文件路径
5、有了文件路径,相信一切问题迎刃而解
下面是例子:
private void textBox1_DragEnter(object sender, DragEventArgs e)
{
//获得数据格式
File.WriteAllLines("C:\\1.text", e.Data.GetFormats()); //获得文件名
string[] filename = (string[])e.Data.GetData("FileNameW",true);
textBox1.Text = filename[0]; string entesion = Path.GetFileName(textBox1.Text); if (!File.Exists(textBox1.Text.Trim())) { return; }
//读取文件流
using (FileStream fsOpen = File.OpenRead(textBox1.Text.Trim()))
{
using (FileStream fs = new FileStream("C:\\" + entesion, FileMode.Create, FileAccess.Write))
{
byte[] buffer = new byte[1024 * 1024];
while (true)
{
int result = fsOpen.Read(buffer, 0, buffer.Length);
if (result <= 0)
{
break;
}
else
{
fs.Write(buffer, 0, result);
}
}
fs.Flush();
}
} }
运行结果:

补充一点:
在win7下可能是因为权限不均衡不触发DragDrop事件,所以我在里只用到DragEnter事件,你们可以试下DragDrop事件,可能用户体验要好点!
C#窗体实现文件拖拽功能的更多相关文章
- C#之winform实现文件拖拽功能
将一个文件拖拽到窗体的某个控件时,将该控件的路径显示在该控件上,只要拿到了路径自然可以读取文件中的内容了 将一个控件的属性AllowDrop设置为true,然后添加DragDrop.DragEnter ...
- C#之winform实现文件拖拽功能【转】
将一个文件拖拽到窗体的某个控件时,将该控件的路径显示在该控件上,只要拿到了路径自然可以读取文件中的内容了 将一个控件的属性AllowDrop设置为true,然后添加DragDrop.DragEnter ...
- Atitit。D&D drag&drop拖拽功能c#.net java swing的对比与实现总结
Atitit.D&D drag&drop拖拽功能c#.net java swing的对比与实现总结 1. 实现一个D&D操作一般包括三个步骤: 1 2. .net黑头的拖曳机制 ...
- RCP:拖拽功能的实现 Drag and Drop
SWT中的拖拽是使用的org.eclipse.swt.dnd. 有三个需要密切注意的类: 1.DragSource 2.DropTarget 3.Transfer DragSource封装了需要被拖拽 ...
- duilib中控件拖拽功能的实现方法(附源码)
转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41144283 duilib库中原本没有显示的对控件增加拖拽的功能,而实际 ...
- html5 文件拖拽上传
本文首先发表在 码蜂笔记 : http://coderbee.net/index.php/web/20130703/266 html5 文件拖拽上传是个老话题了,网上有很多例子,我一开始的代码也是网 ...
- VC实现文件拖拽OnDropFiles
文章转自http://blog.csdn.net/zamaolangzi/article/details/5645284 使用过QQ的人都知道,只要把文件拖拽到消息框中就可以传送文件了.那么这种功能是 ...
- 使用NGUI实现拖拽功能(拼图小游戏)
上一次用UGUI实现了拼图小游戏,这次,我们来用NGUI来实现 实现原理 NGUI中提供了拖拽的基类UIDragDropItem,所以我们要做的就是在要拖拽的图片上加一个继承于该类的脚本,并实现其中的 ...
- FLEX类似谷歌地图拖拽功能
要实现类似于谷歌地图拖拽功能,可以用s:Scroller标签来实现,代码如下: mxml: <s:Scroller width="100%" height="100 ...
随机推荐
- 关于.net根目录路径的问题
今天做了一个项目,用了url重写,但是在本地目录是localhost/BK/index.aspx,而其他目录也必须带bk,不带的话就找不到页面,(iis里正常) 应该主目录去掉bk,设置方法,右击网站 ...
- 【nodejs学习】3.进程管理及异步编程
进程管理 1.调用终端命令实现目录目录拷贝 var child_procress = require('child_procress'); var util = require('util'); fu ...
- AsyncTask api
package com.bf.systemadmin;import android.os.AsyncTask;import android.util.Log;public class MyTask e ...
- Objective-C 异常处理
#import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { ...
- Sql时间函数
一.sql server日期时间函数 Sql Server中的日期与时间函数 1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上一段时间 ...
- shell中命令的执行流程
在shell中,一个命令有3中写法: 1 可以直接写(Normal Command) 2 可以放在双引号中("Command") 3 可以放在单引号中('Comand') 这3中写 ...
- MySQL 使用索引扫描来做排序
MySQL有两种方式可以生成有序的结果:通过排序操作:或者按照索引顺序扫描:如果EXPLAIN 出来的结果的type列的值为“index”,则说明MySQL使用了索引扫描来做排序(不要和Extra列的 ...
- 用linux mail命令发送邮件[Linux]
mail [-s 邮件标题] <<邮件地址1> [邮件地址2] [邮件地址3]> [ < 包含邮件内容的文件路径 ] <-- -f 发送邮件地址> [-F 显 ...
- Android 改变标题栏的背景色
1:styles.xml <!-- Activity theme --> <style name="CustomTheme" parent="andro ...
- PCB布线的地线干扰与抑制方法
1.地线的定义什么是地线?大家在教科书上学的地线定义是:地线是作为电路电位基准点的等电位体.这个定义是不符合实际情况的.实际地线上的电位并不是恒定的.如果用仪表测量一下地线上各点之间的电位,会发现地线 ...