A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄林 中级黑马   /  2012-12-29 09:45  /  2166 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何在listview中实现文件拖放操作,如音乐播放器列表拖放歌曲

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 王晨 于 2012-12-29 12:58 编辑

我这有个以前找的方法,我把文档传给你你看看吧,希望对你有帮助!!!

还有别人整理的这个方法,你也可以参考一下!!!http://returnbackdear.blog.163.com/blog/static/5404843120116135275620/

C#中实现文件拖放打开的方法.pdf

154.69 KB, 下载次数: 134

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
通过处理一系列事件,最著名的有 DragEnter、DragLeave 和 DragDrop 事件,来在 Windows 应用程序内完成拖放操作。通过使用这些事件的事件参数中的可用信息,可以轻松地简化拖放操作。

拖动数据
所有拖放操作都从拖动开始。当拖动开始时,在 DoDragDrop 方法中实现使数据得以收集的功能。

在下面的示例中,使用 MouseDown 事件启动拖动操作,因为该事件最直观(大部分拖放操作都从按下鼠标按钮开始)。但是,请记住,任何事件都可用于启动拖放过程。

注意   某些控件具有自定义的、特定于拖动的事件。例如,ListView 和 TreeView 控件有 ItemDrag 事件。
启动拖动操作

在由其中开始拖动的控件的 MouseDown 事件中,使用 DoDragDrop 方法设置要拖动的数据,并设置拖动将具有的允许效果。有关更多信息,请参见 DataEventArgs.Data 属性和 DataEventArgs.AllowedEffect 属性。
下面的示例显示如何启动拖动操作。拖动开始于的控件是 Button 控件,要拖动的数据是表示 Button 控件的 Text 属性的字符串,允许的效果是复制或移动。

private void button1_MouseDown(object sender,
System.Windows.Forms.MouseEventArgs e)
{
   button1.DoDragDrop(button1.Text, DragDropEffects.Copy |
      DragDropEffects.Move);
}
注意   请注意,任何数据都可用作 DoDragDrop 方法中的参数;在上面的示例中,使用 Button 控件的 Text 属性(而不是对值进行硬编码或从数据集检索数据),因为该属性与(从 Button 控件)开始拖动的位置相关。当将拖放操作合并到 Windows 应用程序中时,请牢记这一点。
拖动操作生效后,可以处理 QueryContinueDrag 事件,该事件“要求系统权限”以继续该拖动操作。当处理此方法时,此时也适于调用将对该拖动操作产生效果的方法,如当光标悬停在 TreeView 控件中的 TreeNode 上时,展开它。

放置数据
开始从 Windows 窗体或控件上的某个位置拖动数据后,将很自然地要将其放置在某处。当光标经过为放置数据而进行了正确配置的窗体或控件区域时,会发生改变。可以通过设置 AllowDrop 属性以及处理 DragEnter 和 DragDrop 事件,使 Windows 窗体或控件内的任何区域接受放置的数据。

执行放置

在“属性”窗口中,将 AllowDrop 属性设置为 true。
右击解决方案资源管理器中的窗体,并选择“查看代码”。
在将要发生放置操作的控件的 DragEnter 事件中,使用 If 语句进行类型检查,确保被拖动数据的类型是可以接受的(在这种情况下为 Text)。代码随后将发生放置操作时将发生的结果设置为 DragDropEffects 枚举中的值。有关更多信息,请参见 DragEventArgs.Effect 属性。

private void textBox1_DragEnter(object sender,
System.Windows.Forms.DragEventArgs e)
{
   if (e.Data.GetDataPresent(DataFormats.Text))
      e.Effect = DragDropEffects.Copy;
   else
      e.Effect = DragDropEffects.None;
}
注意   请注意,您也可以定义您自己的 DataFormats。这与将您自己的对象指定为 SetData 方法的 Object 参数一样简单。在进行该操作时,请确保指定的对象可序列化。有关更多信息,请参见 ISerializable 接口。
在将要发生放置操作的控件的 DragDrop 事件中,使用 GetData 方法检索正在被拖动的数据。有关更多信息,请参见 DataObject.Data 属性。
在下面的示例中,TextBox 控件是要拖动到的控件(发生放置操作的位置)。代码将 TextBox 控件的 Text 属性设置为等于要拖动的数据。


private void textBox1_DragDrop(object sender,
System.Windows.Forms.DragEventArgs e)
{
   textBox1.Text = e.Data.GetData(DataFormats.Text).ToString();
}
注意   另外,还可使用 KeyState 属性,以便根据拖放操作过程中按下的键,出现相应的效果(例如,当按下 CTRL 键时复制拖动的数据是标准操作)。
来自百度

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马