winform拖拽:实现外部文件拖拽到程序内以及程序内部间的拖拽
来源:互联网 发布:疯狂淘宝李涛收费 编辑:程序博客网 时间:2024/05/21 11:03
拖拽相关来源推荐:http://www.cnblogs.com/ServiceboyNew/archive/2012/04/29/2476154.html
一、实现了外部音乐文件向ListView1的拖拽.
*****记得先修改ListView1的AlloDrop属性为true
界面如下:
代码如下:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { InitListView(); } private void InitListView() { listView1.View = View.Details; listView1.LabelEdit = true; listView1.AllowColumnReorder = true; listView1.CheckBoxes = true; listView1.FullRowSelect = true; listView1.GridLines = true; listView1.Sorting = SortOrder.Ascending; listView1.Columns.Add("歌曲名", -2, HorizontalAlignment.Left); listView1.Columns.Add("PC路径", -2, HorizontalAlignment.Left); listView1.Columns[0].Width = 150; listView1.Columns[1].Width = 150; listView2.View = View.Details; listView2.LabelEdit = true; listView2.AllowColumnReorder = true; listView2.CheckBoxes = true; listView2.FullRowSelect = true; listView2.GridLines = true; listView2.Sorting = SortOrder.Ascending; listView2.Columns.Add("歌曲名", -2, HorizontalAlignment.Left); listView2.Columns.Add("PC路径", -2, HorizontalAlignment.Left); listView2.Columns[0].Width = 150; listView2.Columns[1].Width = 150; } private void listView1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { e.Effect = DragDropEffects.Copy; } } private void listView1_DragDrop(object sender, DragEventArgs e) { string[] files = null; if (e.Data.GetDataPresent(DataFormats.FileDrop)) files = e.Data.GetData(DataFormats.FileDrop) as string[]; if (files == null) return; List<string> list = new List<string>(files); list.RemoveAll((file) => { if (!file.EndsWith(".mp3")) return true; return !File.Exists(file); }); if (list.Count == 0) { e.Effect = DragDropEffects.None; return; } string[] musicFiles = list.ToArray(); foreach (var mp3 in musicFiles) { string name = Path.GetFileName(mp3); name = name.Substring(0, name.LastIndexOf('.')).Trim(); this.listView1.Items.Add(new ListViewItem(new string[] { name,mp3 }) { Tag = mp3 }); } } }
二、实现了ListView2向ListView1的拖拽
直接在上面的基础上进行了如下的修改:(最下面有详细代码)
1.如图:
2.如图
-->1
-->2
详细代码:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { InitListView(); InitListView2Data(); } private void InitListView2Data() { string name1 = "动力火车 - 第一滴泪"; string mp31 = "F:\\KuGou\\动力火车 - 第一滴泪.mp3"; string name2 = "樊桐舟 - 你是我一生最爱的人"; string mp32 = "F:\\KuGou\\樊桐舟 - 你是我一生最爱的人.mp3"; string name3 = "凤凰传奇 - 等爱的玫瑰"; string mp33 = "F:\\KuGou\\凤凰传奇 - 等爱的玫瑰.mp3"; string name4 = "付笛声、任静 - 知心爱人"; string mp34 = "F:\\KuGou\\付笛声、任静 - 知心爱人.mp3"; string name5 = "高胜美 - 我是不是你最疼爱的人"; string mp35 = "F:\\KuGou\\高胜美 - 我是不是你最疼爱的人.mp3"; this.listView2.Items.Add(new ListViewItem(new string[] { name1, mp31 }) { Tag = mp31 }); this.listView2.Items.Add(new ListViewItem(new string[] { name2, mp32 }) { Tag = mp32 }); this.listView2.Items.Add(new ListViewItem(new string[] { name3, mp33 }) { Tag = mp33 }); this.listView2.Items.Add(new ListViewItem(new string[] { name4, mp34 }) { Tag = mp34 }); this.listView2.Items.Add(new ListViewItem(new string[] { name5, mp35 }) { Tag = mp35 }); } private void InitListView() { listView1.View = View.Details; listView1.LabelEdit = true; listView1.AllowColumnReorder = true; listView1.CheckBoxes = true; listView1.FullRowSelect = true; listView1.GridLines = true; listView1.Sorting = SortOrder.Ascending; listView1.Columns.Add("歌曲名", -2, HorizontalAlignment.Left); listView1.Columns.Add("PC路径", -2, HorizontalAlignment.Left); listView1.Columns[0].Width = 150; listView1.Columns[1].Width = 150; listView2.View = View.Details; listView2.LabelEdit = true; listView2.AllowColumnReorder = true; listView2.CheckBoxes = true; listView2.FullRowSelect = true; listView2.GridLines = true; listView2.Sorting = SortOrder.Ascending; listView2.Columns.Add("歌曲名", -2, HorizontalAlignment.Left); listView2.Columns.Add("PC路径", -2, HorizontalAlignment.Left); listView2.Columns[0].Width = 150; listView2.Columns[1].Width = 150; } private void listView1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { e.Effect = DragDropEffects.Copy; return; } e.Effect = e.Data.GetData(typeof(string[])) != null ? DragDropEffects.Copy : DragDropEffects.None; } private void listView1_DragDrop(object sender, DragEventArgs e) { string[] files = null; if (e.Data.GetDataPresent(DataFormats.FileDrop)) files = e.Data.GetData(DataFormats.FileDrop) as string[]; else files = e.Data.GetData(typeof(string[])) as string[]; if (files == null) return; List<string> list = new List<string>(files); list.RemoveAll((file) => { if (!file.EndsWith(".mp3")) return true; return !File.Exists(file); }); if (list.Count == 0) { e.Effect = DragDropEffects.None; return; } string[] musicFiles = list.ToArray(); foreach (var mp3 in musicFiles) { string name = Path.GetFileName(mp3); name = name.Substring(0, name.LastIndexOf('.')).Trim(); this.listView1.Items.Add(new ListViewItem(new string[] { name, mp3 }) { Tag = mp3 }); } } private int mDragFlag = 0; private void listView2_MouseMove(object sender, MouseEventArgs e) { if (e.Button != System.Windows.Forms.MouseButtons.Left) return; this.mDragFlag++; if (this.mDragFlag == 5) { ListView.SelectedListViewItemCollection collection = this.listView2.SelectedItems; if (collection == null || collection.Count == 0) { return; } List<string> files = new List<string>(); foreach (ListViewItem item in collection) { if (item.Tag is string) { files.Add(item.Tag as string); } } this.listView2.DoDragDrop(files.ToArray(), DragDropEffects.Copy); } } private void listView2_MouseUp(object sender, MouseEventArgs e) { mDragFlag = 0; } }
0 0
- winform拖拽:实现外部文件拖拽到程序内以及程序内部间的拖拽
- 在winform中利用外部程序打开pdf或者word等文件的方法
- Android:adb不是内部或外部命令,也不是可运行的程序或批量文件
- “adb不是内部或外部命令,也不是可运行的程序或批量文件“
- “adb不是内部或外部命令,也不是可运行的程序或批量文件。”
- adb不是内部或外部命令,也不是可运行的程序或批量文件
- 出现“adb不是内部或外部命令,也不是可运行的程序或批量文件。”
- adb不是内部或外部命令,也不是可运行的程序或批量文件
- 出现“adb不是内部或外部命令,也不是可运行的程序或批量文件。”
- 出现“adb不是内部或外部命令,也不是可运行的程序或批量文件。”
- adb不是内部或外部命令,也不是可运行的程序或批量文件“
- “adb不是内部或外部命令,也不是可运行的程序或批量文件“
- 多文件程序(extern声明、内部函数、外部函数、外部变量、文件包含)
- c#winform对外部程序的调用(notepad)
- Android 获取SHA1以及keystore不是内部或外部命令,也不是可运行程序问题的解决
- Unity3D内部串口通信和Unity3D与Winform程序的串口通信的实现和异常问题
- Unity3D内部串口通信和Unity3D与Winform程序的串口通信的实现和异常问题
- Bat文件执行java命令,报:javac不是内部或外部命令,也不是可运行的程序或批处理文件
- 引领技术潮流的传智播客广州.Net培训课程
- jQuery事件之鼠标事件(转)
- 剖析安卓软件的安装位置
- GameObjectPool
- 非root帐号不能打开1024以下的端口号,切忌!!!
- winform拖拽:实现外部文件拖拽到程序内以及程序内部间的拖拽
- 线上应用故障排查
- OSG 如何像HOOPS一样 设置前后左右上下视图
- 转向ARC的说明
- c#颠倒字符串序列
- android.content.res.Resources$NotFoundException: String resource ID #0x1
- dbca创建数据库
- AppInfoUtil 获取App应用程序信息工具类
- lpad函数