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