winform c# listView鼠标拖拽的有关问题
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
------解决方案--------------------
我是想把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); } }