我是意大利语,所以我为我的英语道歉。我在Win7或Win10上使用VS2008 PRO(VB.NET),Net Framework 3.5 SP1。我有以下问题:
我想在2个不同的列表视图之间拖放项目。源没有分组,目标有分组。
在表单加载时,我用组填充目标列表视图,但没有项目。为了查看这些组,我在每个组中添加了一个Text = String.Empty的“虚拟项”。这种方式向我显示了组,而不显示项目(见图)
我还发现组中的每个第一项的索引均为0,第二项为1,依此类推,因此索引不是唯一的。
当我将项目从源拖动到目标时,我需要确定目标组;用户可以将鼠标移到现有组之间的区域上,而不必总是在现有项目上)在另一个问题中,我找到了以下代码:
' Retrieve the client coordinates of the mouse pointer.
Dim targetPoint As Point = TargetList.PointToClient(New Point(e.X, e.Y))
' Retrieve the index of the item closest to the mouse pointer.
Dim targetIndex As Integer = TargetList.InsertionMark.NearestIndex(targetPoint)
在上面的代码中,我获得了最接近用户释放鼠标的索引,但我始终获得索引= 0的项目(没有有关组的信息);这样对我不好
Dim htInfo As ListViewHitTestInfo = TargetList.HitTest(TargetList.PointToClient(New Point(e.X, e.Y)))
Dim lviSibling As ListViewItem = htInfo.Item
以上代码仅在将鼠标释放到现有项目上时有效;如果不是这样(当Item存在但不可见时我处于这种状态),则htInfo.Item为Nothing,我无法获得相关的组。
一种可能的解决方案是显示带有文本“ [在此处放下新项目]”的虚拟项目,以迫使用户将鼠标释放到现有项目上,但是我想找到一种更好的方法(如果有)
任何建议将不胜感激。 谢谢 斯特凡诺