vc中 listview 怎样现实拖放功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vc中 listview 怎样现实拖放功能相关的知识,希望对你有一定的参考价值。
效果如http://down.mpsoft.net/mpcysetup.exe
这个软件的listview
你说的是 下面的 listview吧 这个很好实现 ,
加6833308
最近我也在做一个 类似的软件。 参考技术A 由ListView的
MouseMove
DragDrop
DragMove
来控制
WPF - 拖放 - 装饰器在控件外消失
【中文标题】WPF - 拖放 - 装饰器在控件外消失【英文标题】:WPF - Drag-drop - Adorner disappers outside the control 【发布时间】:2011-06-22 04:17:37 【问题描述】:我正在使用 WPF 创建两个 ListView 并实现拖放功能。 (intra-listview 和 inter-listview)
我发现了一个有趣的帖子here 就是这样做的。
但是,有一个问题。当我从 listView1 中拖动一个 listviewitem 时,我只能在 listView1 中看到装饰器(幽灵图像)。当我想将 listviewItem 放到 ListView2 上时,我也必须在那里看到装饰器。基本上,装饰器仅出现在开始拖动操作的 listView 上。一旦它在 listView 之外,它就会消失。
我进行了一些研究,但无法找到使装饰器在启动拖动的控件之外可见的方法。
谁能帮我提些建议?
【问题讨论】:
【参考方案1】:连接 GiveFeedback 事件以更新列表视图之外的装饰器位置。从下面的示例和方法中更新了 ListView 属性(在 listview_DragLeave 方法中,您不想折叠装饰器):
/// <summary>
/// Gets/sets the ListView whose dragging is managed. This property
/// can be set to null, to prevent drag management from occuring. If
/// the ListView's AllowDrop property is false, it will be set to true.
/// </summary>
public ListView ListView
get return listView;
set
if( this.IsDragInProgress )
throw new InvalidOperationException( "Cannot set the ListView property during a drag operation." );
if( this.listView != null )
#region Unhook Events
this.listView.PreviewMouseLeftButtonDown -= listView_PreviewMouseLeftButtonDown;
this.listView.PreviewMouseMove -= listView_PreviewMouseMove;
this.listView.DragOver -= listView_DragOver;
this.listView.DragLeave -= listView_DragLeave;
this.listView.DragEnter -= listView_DragEnter;
this.listView.GiveFeedback -= listView_GiveFeedback;
this.listView.Drop -= listView_Drop;
#endregion // Unhook Events
this.listView = value;
if( this.listView != null )
if( !this.listView.AllowDrop )
this.listView.AllowDrop = true;
#region Hook Events
this.listView.PreviewMouseLeftButtonDown += listView_PreviewMouseLeftButtonDown;
this.listView.PreviewMouseMove += listView_PreviewMouseMove;
this.listView.DragOver += listView_DragOver;
this.listView.DragLeave += listView_DragLeave;
this.listView.DragEnter += listView_DragEnter;
this.listView.GiveFeedback += listView_GiveFeedback;
this.listView.Drop += listView_Drop;
#endregion // Hook Events
void listView_GiveFeedback(object sender, GiveFeedbackEventArgs e)
if (this.ShowDragAdornerResolved)
this.UpdateDragAdornerLocation();
【讨论】:
我在玩这个时遇到的另一件事。也就是说,如果我有一个动画弹出窗口打开显示第二个列表视图,则装饰器不再可见。它仅在页面上可见,而不是弹出窗口。有没有可能克服这个限制? 感谢 Nihar,不知道如何临时渲染窗口外,需要进行一些研究。 :-)以上是关于vc中 listview 怎样现实拖放功能的主要内容,如果未能解决你的问题,请参考以下文章