日期:2014-05-18  浏览次数:21198 次

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)))