读书人

winform c# listView鼠标拖拽的有关问

发布时间: 2012-01-02 22:40:04 作者: rapoo

winform c# listView鼠标拖拽的问题
我是想把listView里的数据拖动到pictureBox里



我现在想拖动右下角的listView里的摄像机1到一个pictureBox里
拖到哪个pictureBox里就在哪个里边进行判断
判断拖动的是哪个摄象机,然后再在pictureBox判断需要显示出哪个视频

不知道这个思路是否正确

困扰了我好几天了,在网上搜了好多,没找到我想要的功能,而且还有的封装成了DLL,想看看怎么写的或者是修改一下都不行

我现在连拖拽的功能都不知道怎么写呢````

请各位帮忙

[解决办法]
listView_MouseDown
listView_MouseMove

pictureBox.AllowDrop==true

pictureBox_DragEnter
pictureBox_DragDrop
[解决办法]
pictureBox.AllowDrop=true

[解决办法]
pictureBox1.AllowDrop==true

pictureBox1_DragEnter
pictureBox1_DragDrop
[解决办法]

C# code
        private Point Position = new Point(0, 0);        private void treeFileView_ItemDrag(object sender, ItemDragEventArgs e)        {            DoDragDrop(e.Item, DragDropEffects.Move);         }        private void treeFileView_DragEnter(object sender, DragEventArgs e)        {            if (e.Data.GetDataPresent(typeof(TreeNode)))            {                e.Effect = DragDropEffects.Move;            }            else                e.Effect = DragDropEffects.None;        }        string filePath = Application.StartupPath.ToString() + "\\MyFiles\\";        private void treeFileView_DragDrop(object sender, DragEventArgs e)        {            TreeNode myNode = null;            if (e.Data.GetDataPresent(typeof(TreeNode)))            {                myNode = (TreeNode)(e.Data.GetData(typeof(TreeNode)));            }            else            {                MessageBox.Show("error");            }            Position.X = e.X;            Position.Y = e.Y;            Position = treeFileView.PointToClient(Position);            TreeNode DropNode = treeFileView.GetNodeAt(Position);            if (DropNode.Parent == myNode || DropNode == myNode)            {            }            else if (DirAndFileOperator.IsFile(DropNode))            {                        }            else            {                //DirAndFileOperator.MoveFolder(filePath + myNode.FullPath, filePath + DropNode.FullPath + @"\" + myNode.Name);                TreeNode DragNode = myNode;                myNode.Remove();                DropNode.Nodes.Add(DragNode);            }            treeFileView.SelectedNode = DropNode;            DropNode.Expand();        }        private void treeFileView_DragOver(object sender, DragEventArgs e)        {            TreeNode myNode = null;            if (e.Data.GetDataPresent(typeof(TreeNode)))            {                e.Effect = DragDropEffects.Move;                myNode = (TreeNode)(e.Data.GetData(typeof(TreeNode)));            }            else                e.Effect = DragDropEffects.None;            Position.X = e.X;            Position.Y = e.Y;            Position = treeFileView.PointToClient(Position);            TreeNode DropNode = treeFileView.GetNodeAt(Position);            treeFileView.SelectedNode = DropNode;        }
[解决办法]
做了一下,很容易。把代码给你参考一下
C# code
    private void Form1_Load(object sender, EventArgs e)    {        //在Load的时候把picturebox的AllowDrop属性设置为true。         // ps:pictureBox的属性只能通过写代码设置,并且还没有智能感知        this.pictureBox1.AllowDrop = true;    }    //在listView的ItemDrag里把摄像机名字传送    private void listView1_ItemDrag(object sender, ItemDragEventArgs e)    {        DoDragDrop(e.Item.ToString(), DragDropEffects.Copy);    }    //判断是不是可以接收的数据类型    private void pictureBox1_DragEnter(object sender, DragEventArgs e)    {        if (e.Data.GetDataPresent(typeof(string)))            e.Effect = DragDropEffects.Copy;        else            e.Effect = DragDropEffects.None;    }    //处理dragdrop事件    private void pictureBox1_DragDrop(object sender, DragEventArgs e)    {        string camera = string.Empty ;        if (e.Data.Equals(typeof(string)))            camera = e.Data.GetData(typeof(string)).ToString();        if (path.Length > 0)        {            //在这里做你的判断(判断拖动的是哪个摄象机,然后再在pictureBox判断需要显示出哪个视频)             //pictureBox1.Load(camera);        }    } 


[解决办法]

读书人网 >C#

热点推荐