C# 获取往控件中拖进的文件或文件夹的信息(原创)
来源:互联网 发布:阿里云服务器能翻墙吗 编辑:程序博客网 时间:2024/06/04 19:05
网络中百度或者谷歌一下有很多相关文章进行说明,不过很多都是不得的,或者说没有达到你所要的要求。刚好我这阵子弄一个东西需要到这样的操作,下面我们来探讨一下具体怎么实现。
实际上任何包含有AllowDrop属性的控件都会有对应的四个拖动事件:DragDrop、DragEnter、DragLeave和DragOver。
相关说明:
DragDrop:拖放操作完成时发生。
DragEnter:在将对象拖入控件的边界时发生。
DragLeave:在将对象拖出控件的边界时发生。
DragOver:在将对象拖到控件的边界上发生。
如果你不想在一拖动东西刚刚进到控件就触发事件,而是希望等你放开鼠标之后再触发。那你就不能使用DragEnter事件,而应该使用DragDrop事件。
事实是:设置控件的AllowDrop属性为true之后,你双击控件的DragDrop事件,进入到事件的代码区,你会发现不管你拖动任何东西到控件中去,都不会触发DragDrop事件。
同时,如果你双击控件的DragEnter事件,你拖动任何东西进去都会触发该事件。你设断点跟踪一下即可发现一下情况:
你如果在DragEnter事件中更改DragEventArgs委托类型的参数e.Effect属性,比如,在DragEnter事件中写:
private void listView1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.None;//(使用DragEventArgs类型参数的Effect属性来设定所允许的置放操作。只要不是:e.Effect = DragDropEffects. None,其它都可以,这里的目的是触发DragDrop事件。)
}
此时你往控件中拖动任何东西的时候都会触发DragDrop事件。这个时候你就可以把东西拖动进控件后,等你放开鼠标了才进行你想要的操作。这里涉及到.Net事件模型的运行机制。你可以通过更改同一个对象的(即控件,这里的例子用到的是ListView控件)DragEventArgs委托类型参数来实现触发同一个对象的其他事件。
以下是我写的小例程,当拖动进来的是文件(或者文件夹)的时候,就弹出消息框,消息框内容显示拖动进来的文件(或者文件夹)的路径信息。当拖动进来的是文本内容的时候,label2控件就显示文本内容信息。
private void listView1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Link;
}
else if (e.Data.GetDataPresent(DataFormats.Text))
{
e.Effect = DragDropEffects.Copy;
}
}
private void listView1_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
string str = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();
MessageBox.Show(str, "提示信息", MessageBoxButtons.OK);
}
else if (e.Data.GetDataPresent(DataFormats.Text))
{
label2.Text = (e.Data.GetData(DataFormats.Text)).ToString();
}
}
- C# 获取往控件中拖进的文件或文件夹的信息(原创)
- asp 获取文件夹或文件或目录的大小
- C#遍历文件夹, 获取文件/目录信息
- C# 获取文件的数字签名信息
- C# 获取文件的数字签名信息
- C#获取文件的全部信息
- CMD:[3]获取驱动器或文件夹内的文件列表
- java中获取文件或文件夹的路径方法
- win7系统如何获取文件或文件夹的完整路径
- C#中判断文件夹或文件是否存在的方法
- C# 获取进程或线程的相关信息
- C#中对文件夹及文件信息的操作
- C#获取文件夹下的所有文件的文件名
- C#获取文件夹下的所有文件的文件名
- C#获取文件夹下的所有文件的文件名
- C#获取文件夹下的所有文件的文件名
- c#获取文件夹指定的多种类型的文件
- delphi 获取Exe或DLL的文件版本信息
- 一大哥花了256万买了辆W12缸6.0的大众辉腾,引发一以下的几个故事
- Java类的初始化顺序
- Sql ISNULL() 函数
- 函数的调用规则(__cdecl,__stdcall,__fastcall,__pascal)
- yahoo前端优化34条规则——内容篇
- C# 获取往控件中拖进的文件或文件夹的信息(原创)
- 偷偷老去的70后
- 17---java中Annotation01(系统内置的)
- 怎么在VS2008中创建数据库和数据表
- eclipse无法在线install new software的解决办法
- JavaScript - 弹出层
- javascript五星评价效果(火狐显示不出效果)
- yahoo前端优化34条规则——Server篇
- 146条民间偏方,觉得有用的话就看下