{A}
{S0}简介
这种控制是在题为quot的文章中的代码的扩展。
mav.northwind开发控制以下功能:多选择的项目重新排序功能自动滚动而重新排序的ListView启用/禁用重新排序的功能与DisableItemReorder属性能够锁定ReorderStartIndex财产的第一个(N)列表中的项目插入栏的颜色变化与InsertionLineColor财产
此外,我感动到ListView控件本身的重新排序ListView的事件处理程序,所以没有需要处理的范围内任何形式。最后,因为我的项目需要在VB,我改变了从C#VB程序员的代码。背景
在这篇文章中思想的背景中,你应征询mav.northwind文章,处理同一主题,但解决的自动滚动功能,以及。使用代码
使用此代码,只需添加自定义控件类ReorderListView到您的项目。建设控制类,然后使用上的Windows窗体ReorderListView控件。在VS2008中的示例代码和项目完成;但是,代码应工作在早期版本的罚款。兴趣点
处理多个选定项目的支持,只需首先选定的项目保存到一个列表集合,然后从ListView中删除,最后,插入ListView的所有在适当的指数回。至于自动滚动,它是一个简单的使用SendMessageA函数来滚动控制的问题。定时器和onTick事件处理,以启动在SendMessage例程,因此计时器的时间间隔设置的频率,在SendMessage调用例程。这将导致更频繁的SendMessage函数调用时,计时器的时间间隔值小,从而更快地滚动,和更少的呼叫时,计时器的时间间隔是慢滚动。Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
'Reduce Flicker
SetStyle(Windows.Forms.ControlStyles.OptimizedDoubleBuffer, True)
'Initialize Scrolling Timer
tmrLVScroll.Enabled = False
tmrLVScroll.Interval = 100
End Sub
#Region "Scrolling Support"
'This section handles the auto-scrolling when an item
'is dragged to the top or bottom of the list
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Integer, _
ByVal wMsg As Integer, ByVal wParam As Integer, _
ByRef lParam As Object) As Integer
Private Sub tmrLVScroll_Tick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles tmrLVScroll.Tick
ScrollControl(Me, intScrollDirection)
End Sub
Private Sub ScrollControl(ByRef objControl As Control, ByRef intDirection As Integer)
Const WM_SCROLL As Integer = &H115S
SendMessage(objControl.Handle.ToInt32, WM_SCROLL, intDirection, VariantType.Null)
End Sub
#End Region
现在,它只是使定时器滚动和确定方向的滚动,并禁用它不会滚动时的问题。要启用/禁用定时器,在合适的时间,我添加一个如下所示的MouseMove事件中的一小段代码。我用,而不是控制本身的顶部的列表顶部的项目,以确定控制滚动,使滚动工程是否显示或不列标题。{C}
这是很简单的实现,所以这里没有真正的神秘。没有华丽的编码,一切都非常简单,但是这就是我喜欢有少quot;无证featuresquot。我还要指出,这些项目得到重新排序至于它们的索引值是有关在任何视图(大图标,列表,详细信息等);然而,这些项目是不重绘正确地在其他意见比列表中的ListView细节,所以他们不会出现改变,改变的看法是,直到,然后改回(或也许如果所有的项目都重新加载)。因为我只需要在详细信息视图无论如何,我并没有刻意去追求,但如果你想重新排列的大图标视图中的项目,这是一个良好的开端。我没有正确的方式插入栏显示从原来的文章的其他意见原岗位mav.northwind。我希望这可以帮助别人。
由于时间所限,我不打算支持,所以我不期望后新的更新。使用它 - 但如果你有一个固定显示更新后重新安排大图标和其他意见建议,我敢肯定有人想听到。所有的感谢!历史2009年3月3日 - 战后初期。