Tag: 拖放

在C#Windows窗体中的同一ListView控件中重新排序/移动/拖放ListViewItems

我在C#2008系统Windows窗体的LargeIcon视图中有一个ListView 。 现在我想在同一个ListView中移动这个ListView的一个项目在另一个位置 – 让我们称它为“拖放”或“项目重新排序”或其他什么。 VB 6能够做到这一点,并在任何listView中自动执行此操作。 C#似乎没有此function,或者需要先编码。 为了编码,我没有经验,我在互联网上的研究中找不到任何答案。 我发现只有一个“覆盖程序”没有用。 我不需要任何其他ListView控件(如ObjectListView或其他),我不需要覆盖程序或制作新的ListView控件。 我想在Microsoft提供的ListView控件中处理它。 对此有任何想法。 代码将受到高度赞赏我相信我不能自己做,除非它是一个非常简单的单行。 PS:如果需要移动项目,我需要移动项目的所有属性(text,tag,imagekey,background-color,foreground-color,name,tooltiptext等)。 我不知道如何实现这一目标。 我发现了一个提示:它存在删除一个项目(称为.Remove ())并插入一个名为.Insert ()的插入。 但是有了这些信息,我仍然无法通过鼠标“移动”物品。 我认为listView的所有DragEvents都在这里发挥作用,但我不知道如何使用它们以及如何将所选项目( listView1.SelectedItems )复制到正确的位置并且需要首先获得此位置。

在Windows Phone 8.1中拖延UIElement的拖放

我正在使用ManipulationDelta事件处理程序在屏幕上的canvas中拖放一个简单的椭圆。 我正在几个地方使用在线发布的标准方法。 以下是我的事件处理程序中的代码: Ellipse dragableItem = sender as Ellipse; TranslateTransform translateTransform = dragableItem.RenderTransform as TranslateTransform; double newPosX = Canvas.GetLeft(dragableItem) + translateTransform.X + e.Delta.Translation.X; double newPosY = Canvas.GetTop(dragableItem) + translateTransform.Y + e.Delta.Translation.Y; if (!isCanvasBoundary(newPosX, TestCanvas.ActualWidth – dragableItem.ActualWidth, 0)) translateTransform.X += e.Delta.Translation.X; if (!isCanvasBoundary(newPosY, TestCanvas.ActualHeight – dragableItem.ActualHeight, 0)) translateTransform.Y += e.Delta.Translation.Y; 拖放操作工作正常,但是当用户开始拖动到椭圆实际改变其位置之间时,存在大约1秒的令人讨厌的延迟。 我可以通过打印到调试器看到事件处理程序本身几乎立即完成执行,所以我猜它有一些事情可以为屏幕上的所有UIElements做预编程刷新率导致这种延迟? 反正这个问题呢?

在Windows资源管理器上获取drag-n-drop文件的文件路径

drag-n-drop是很多站点中讨论很多的话题(这也是),我也发现了很好的问题,但没有回答这个案例。 我有一个带有一些元素的listView ,我需要它们在Windows资源管理器上可以放置。 当删除时,我只需要删除它们的文件路径,我不需要复制任何东西,只需要路径。 类似的问题(以及他们为什么不适合我): 拖放到桌面/资源管理器 (仅当您已经有要复制的文件并且没有提供路径时才有效) http://blogs.msdn.com/b/delay/archive/2009/11/16/creating-something-from-nothing-and-knowing-it-developer-friendly-virtual-file-implementation-for-net- refined.aspx (这看起来不错,但它仍然创建一个虚拟文件并将其复制到该位置,所以我没有路径,仍然需要在我的目的地复制一些东西) 我找到的唯一解决方案: http://www.codeproject.com/Articles/23207/Drag-and-Drop-to-Windows-Folder-C 这可以工作,但是以非常“不实际”的方式,它创建一个文件观察器,创建一个虚拟文件,让DragDrop函数复制它,观察它的创建位置,最后删除它。 在我的Windows8.1中测试它导致错误的资源管理器刷新,我仍然可以看到该文件,直到我刷新我的屏幕(F5)。 这是唯一的方法吗? 我仍然无法相信我无法以更简单的方式实现这一目标

在WPF中的网格中的单元格之间拖放自定义控件

我有一些自定义控件,可以动态添加到自定义网格中。 这些控件可以跨越多个列和行(大小都相同)。 我想在行和列之间拖放。 我可以拖动单个控件,但它们可以无限制地移动到任何地方。 即使是离网。 我想这样做,所以它只能在网格内拖动并捕捉到它拖动到的列/行。 有没有简单的方法来做到这一点? 老实说,如果我能得到它已经结束的当前行/列,那么我需要做的就是将它的列/行设置为它们并且可能会这样做然后只是担心将它保留在网格中。

使用拖放时,我可以使Treeview扩展用户hover的节点吗?

简单来说: 在拖放操作正在进行的同时,.Net 2.0中是否有任何内置函数可以扩展TreeNode ? 我在Visual Studio 2005中使用C#。 更详细: 我已经使用多级多线树(想想组织图或文件/文件夹对话框)填充了Treeview控件,我想使用拖放来移动树中的节点。 拖放代码运行良好,我可以放到任何可见的节点上,但是我希望我的控件在Windows资源管理器窗格上拖动文件时的行为就像Windows资源管理器一样。 具体来说,我希望每个文件夹打开,如果徘徊1/2秒左右。 我已经开始使用Threading和Sleep方法开发一个解决方案,但是我遇到了问题,并且想知道是否已经存在某些问题,如果不是,我会指责并学习如何使用线程(这是关于时间的,但我是希望快速推出这个应用程序) 在拖放模式中盘旋时,是否需要编写自己的代码来处理扩展TreeNode ?

C#在Canvas中拖放图像

我试图谷歌如何在canvas上拖放UIElements,但找不到我正在寻找的东西。 我有一个带有Window的C#WPF应用程序。 在窗口内我有一个Canvas,我可以在其中添加图像。 我想要的是能够拖放图像,同时保持在canvas的边界内。 我也希望它在代码中,所以不在xaml中。 我在我添加/更新图像到canvas的function中得到了这个。 TODO应该替换为拖放事件。 Image img = ImageList[i].Image; img.Name = “Image” + i; // TODO: Drag and Drop event for Image // TODO: Check if Left and Top are within Canvas (minus width / height of Image) Canvas.SetLeft(img, Left); // Default Left when adding the image = 0 Canvas.SetTop(img, Top); // Default […]

如何使用filegroupdescriptor将文件拖到资源管理器c#

我想将列表框的元素拖放到资源管理器中。 当拖放开始时,我需要按需准备文件并将其保存到内存流中。 您能否提供一个使用FileGroupDescriptor数据结构的示例? 谢谢。 安德里亚

ItemsControl拖放

我有一个带有DataTemplate的ItemsControl,它绑定到整数的ObservableCollection。 并在Windows资源中: 我正在尝试实现在ItemsControl中拖放项目的能力(即能够重新排序整数)。 有没有人有一个如何做到这一点的简单例子? 我连接了PreviewMouseMove,DragEnter和Drop事件。 问题是我无法弄清楚如何确定拖动哪个项目以及拖动它的位置。 似乎整个ItemsControl都被传递到事件中。

用鼠标移动绘制的线条

我试图通过用鼠标抓住它来移动绘制的线条。 该行已经使用Graphics.DrawLine(Pen P, Point A, Point B)绘制。 创建Line并在表单上绘制它绝对没有问题。 我试过了: 将行添加到GraphicsPath – 这甚至不绘制OnPaint行。 检查MouseEventArgs e.Location是否与一些基本代数一致(我现在扔掉的计算) 总结一下:我想抓住线并将其拖到某处,但我甚至无法检查e.Location是否在线上,我该怎么做? 编辑:这是我使用GraphicsPath时代码的外观。 当我不使用GraphicsPath我有: if (s.thisShape == ShapeType.Line) { g.DrawLine(pen, s.p1, s.p2); } else { … }` 在drawingShapes方法中。 来自drawStuff:Usercontrol类: private void drawStuff_MouseDown(object sender, MouseEventArgs e) { pointRegion = e.Location; for (int i = 0; i < Shapes.Count; i++) { if (Shapes[i].Region.IsVisible(pointRegion)) { […]

DoDragDrop禁用MouseMove事件

在DragDrop.DoDragDrop(…)开始拖放操作后,不再触发MouseMove事件。 我甚至试过了 AddHandler(Window.MouseMoveEvent, new MouseEventHandler(myControl_MouseMove), true); 最后一个参数意味着我甚至选择处理事件。 没有机会,似乎MouseMove事件根本就没有被解雇! 使用Drag&Drop时还能获得MouseMove事件的任何方法吗? 我想拖放一个控件,拖动这个控件时它应该跟随鼠标指针。 知道在这种情况下如何做到这一点?