有时候我们想对Listview的数据进行上移、下移,但是貌似VB没有一个内置的函数来支持此操作,每次写代码来实现又太麻烦。于是,我就写了本函数,希望能对大家有用,代码写的不太好,见笑了。
1.支持任意列数的Listview的数据交换
2.使用方便,操作简单。
代码
'
交换Listview两行内容
Public Sub SwapList(i1 As Long , i2 As Long , slistview As ListView)
Dim i As Long
Dim tempHI1() As String
Dim tempHI2() As String
Dim iCount As Long
Dim itCount As Long ' 特殊隐藏项个数
iCount = slistview.ColumnHeaders.Count - 1
' ''''''''''i1'''''''''''''''''''
itCount = 12
ReDim tempHI1(iCount + itCount)
tempHI1( 0 ) = slistview.ListItems.Item(i1).Tag
tempHI1( 1 ) = slistview.ListItems.Item(i1).Key
tempHI1( 2 ) = slistview.ListItems.Item(i1).Text
tempHI1( 3 ) = slistview.ListItems.Item(i1).SmallIcon
tempHI1( 4 ) = slistview.ListItems.Item(i1).Icon
tempHI1( 5 ) = slistview.ListItems.Item(i1).ToolTipText
tempHI1( 6 ) = slistview.ListItems.Item(i1).ForeColor
tempHI1( 7 ) = CStr (slistview.ListItems.Item(i1).Bold)
tempHI1( 8 ) = CStr (slistview.ListItems.Item(i1).Checked)
tempHI1( 9 ) = CStr (slistview.ListItems.Item(i1).Ghosted)
tempHI1( 10 ) = CStr (slistview.ListItems.Item(i1).Selected)
For i = 1 To iCount
tempHI1(i + itCount - 1 ) = slistview.ListItems.Item(i1).SubItems(i)
Next
' '''''''''''''''''''''''''''''
' ''''''''''i2'''''''''''''''''''
ReDim tempHI2(iCount + itCount)
tempHI2( 0 ) = slistview.ListItems.Item(i2).Tag
tempHI2( 1 ) = slistview.ListItems.Item(i2).Key
tempHI2( 2 ) = slistview.ListItems.Item(i2).Text
tempHI2( 3 ) = slistview.ListItems.Item(i2).SmallIcon
tempHI2( 4 ) = slistview.ListItems.Item(i2).Icon
tempHI2( 5 ) = slistview.ListItems.Item(i2).ToolTipText
tempHI2( 6 ) = slistview.ListItems.Item(i2).ForeColor
tempHI2( 7 ) = CStr (slistview.ListItems.Item(i2).Bold)
tempHI2( 8 ) = CStr (slistview.ListItems.Item(i2).Checked)
tempHI2( 9 ) = CStr (slistview.ListItems.Item(i2).Ghosted)
tempHI2( 10 ) = CStr (slistview.ListItems.Item(i2).Selected)
For i = 1 To iCount
tempHI2(i + itCount - 1 ) = slistview.ListItems.Item(i2).SubItems(i)
Next
' '''''''''''''''''''''''''''''
slistview.ListItems.Item(i1).Key = ""
slistview.ListItems.Item(i2).Key = ""
slistview.ListItems.Item(i2).Tag = tempHI1( 0 )
slistview.ListItems.Item(i2).Key = tempHI1( 1 )
slistview.ListItems.Item(i2).Text = tempHI1( 2 )
slistview.ListItems.Item(i2).SmallIcon = Val(tempHI1( 3 ))
slistview.ListItems.Item(i2).Icon = Val(tempHI1( 4 ))
slistview.ListItems.Item(i2).ToolTipText = tempHI1( 5 )
slistview.ListItems.Item(i2).ForeColor = Val(tempHI1( 6 ))
slistview.ListItems.Item(i2).Bold = tempHI1( 7 )
slistview.ListItems.Item(i2).Checked = tempHI1( 8 )
slistview.ListItems.Item(i2).Ghosted = tempHI1( 9 )
slistview.ListItems.Item(i2).Selected = tempHI1( 10 )
slistview.ListItems.Item(i1).Tag = tempHI2( 0 )
slistview.ListItems.Item(i1).Key = tempHI2( 1 )
slistview.ListItems.Item(i1).Text = tempHI2( 2 )
slistview.ListItems.Item(i1).SmallIcon = Val(tempHI2( 3 ))
slistview.ListItems.Item(i1).Icon = Val(tempHI2( 4 ))
slistview.ListItems.Item(i1).ToolTipText = tempHI2( 5 )
slistview.ListItems.Item(i1).ForeColor = Val(tempHI2( 6 ))
slistview.ListItems.Item(i1).Bold = tempHI2( 7 )
slistview.ListItems.Item(i1).Checked = tempHI2( 8 )
slistview.ListItems.Item(i1).Ghosted = tempHI2( 9 )
slistview.ListItems.Item(i1).Selected = tempHI2( 10 )
For i = 1 To iCount
slistview.ListItems.Item(i2).SubItems(i) = tempHI1(i + itCount - 1 )
slistview.ListItems.Item(i1).SubItems(i) = tempHI2(i + itCount - 1 )
Next
' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
itCount = 5
ReDim tempHI1(itCount)
For i = 1 To iCount
tempHI1( 0 ) = slistview.ListItems.Item(i1).ListSubItems(i).Tag
tempHI1( 1 ) = slistview.ListItems.Item(i1).ListSubItems(i).Key
tempHI1( 2 ) = slistview.ListItems.Item(i1).ListSubItems(i).ReportIcon
tempHI1( 3 ) = slistview.ListItems.Item(i1).ListSubItems(i).ToolTipText
tempHI1( 4 ) = slistview.ListItems.Item(i1).ListSubItems(i).ForeColor
tempHI1( 5 ) = CStr (slistview.ListItems.Item(i1).ListSubItems(i).Bold)
tempHI2( 0 ) = slistview.ListItems.Item(i2).ListSubItems(i).Tag
tempHI2( 1 ) = slistview.ListItems.Item(i2).ListSubItems(i).Key
tempHI2( 2 ) = slistview.ListItems.Item(i2).ListSubItems(i).ReportIcon
tempHI2( 3 ) = slistview.ListItems.Item(i2).ListSubItems(i).ToolTipText
tempHI2( 4 ) = slistview.ListItems.Item(i2).ListSubItems(i).ForeColor
tempHI2( 5 ) = CStr (slistview.ListItems.Item(i2).ListSubItems(i).Bold)
slistview.ListItems.Item(i2).ListSubItems(i).Tag = tempHI1( 0 )
slistview.ListItems.Item(i2).ListSubItems(i).Key = tempHI1( 1 )
slistview.ListItems.Item(i2).ListSubItems(i).ReportIcon = Val(tempHI1( 2 ))
slistview.ListItems.Item(i2).ListSubItems(i).ToolTipText = tempHI1( 3 )
slistview.ListItems.Item(i2).ListSubItems(i).ForeColor = Val(tempHI1( 4 ))
slistview.ListItems.Item(i2).ListSubItems(i).Bold = tempHI1( 5 )
slistview.ListItems.Item(i1).ListSubItems(i).Tag = tempHI2( 0 )
slistview.ListItems.Item(i1).ListSubItems(i).Key = tempHI2( 1 )
slistview.ListItems.Item(i1).ListSubItems(i).ReportIcon = Val(tempHI2( 2 ))
slistview.ListItems.Item(i1).ListSubItems(i).ToolTipText = tempHI2( 3 )
slistview.ListItems.Item(i1).ListSubItems(i).ForeColor = Val(tempHI2( 4 ))
slistview.ListItems.Item(i1).ListSubItems(i).Bold = tempHI2( 5 )
Next
Public Sub SwapList(i1 As Long , i2 As Long , slistview As ListView)
Dim i As Long
Dim tempHI1() As String
Dim tempHI2() As String
Dim iCount As Long
Dim itCount As Long ' 特殊隐藏项个数
iCount = slistview.ColumnHeaders.Count - 1
' ''''''''''i1'''''''''''''''''''
itCount = 12
ReDim tempHI1(iCount + itCount)
tempHI1( 0 ) = slistview.ListItems.Item(i1).Tag
tempHI1( 1 ) = slistview.ListItems.Item(i1).Key
tempHI1( 2 ) = slistview.ListItems.Item(i1).Text
tempHI1( 3 ) = slistview.ListItems.Item(i1).SmallIcon
tempHI1( 4 ) = slistview.ListItems.Item(i1).Icon
tempHI1( 5 ) = slistview.ListItems.Item(i1).ToolTipText
tempHI1( 6 ) = slistview.ListItems.Item(i1).ForeColor
tempHI1( 7 ) = CStr (slistview.ListItems.Item(i1).Bold)
tempHI1( 8 ) = CStr (slistview.ListItems.Item(i1).Checked)
tempHI1( 9 ) = CStr (slistview.ListItems.Item(i1).Ghosted)
tempHI1( 10 ) = CStr (slistview.ListItems.Item(i1).Selected)
For i = 1 To iCount
tempHI1(i + itCount - 1 ) = slistview.ListItems.Item(i1).SubItems(i)
Next
' '''''''''''''''''''''''''''''
' ''''''''''i2'''''''''''''''''''
ReDim tempHI2(iCount + itCount)
tempHI2( 0 ) = slistview.ListItems.Item(i2).Tag
tempHI2( 1 ) = slistview.ListItems.Item(i2).Key
tempHI2( 2 ) = slistview.ListItems.Item(i2).Text
tempHI2( 3 ) = slistview.ListItems.Item(i2).SmallIcon
tempHI2( 4 ) = slistview.ListItems.Item(i2).Icon
tempHI2( 5 ) = slistview.ListItems.Item(i2).ToolTipText
tempHI2( 6 ) = slistview.ListItems.Item(i2).ForeColor
tempHI2( 7 ) = CStr (slistview.ListItems.Item(i2).Bold)
tempHI2( 8 ) = CStr (slistview.ListItems.Item(i2).Checked)
tempHI2( 9 ) = CStr (slistview.ListItems.Item(i2).Ghosted)
tempHI2( 10 ) = CStr (slistview.ListItems.Item(i2).Selected)
For i = 1 To iCount
tempHI2(i + itCount - 1 ) = slistview.ListItems.Item(i2).SubItems(i)
Next
' '''''''''''''''''''''''''''''
slistview.ListItems.Item(i1).Key = ""
slistview.ListItems.Item(i2).Key = ""
slistview.ListItems.Item(i2).Tag = tempHI1( 0 )
slistview.ListItems.Item(i2).Key = tempHI1( 1 )
slistview.ListItems.Item(i2).Text = tempHI1( 2 )
slistview.ListItems.Item(i2).SmallIcon = Val(tempHI1( 3 ))
slistview.ListItems.Item(i2).Icon = Val(tempHI1( 4 ))
slistview.ListItems.Item(i2).ToolTipText = tempHI1( 5 )
slistview.ListItems.Item(i2).ForeColor = Val(tempHI1( 6 ))
slistview.ListItems.Item(i2).Bold = tempHI1( 7 )
slistview.ListItems.Item(i2).Checked = tempHI1( 8 )
slistview.ListItems.Item(i2).Ghosted = tempHI1( 9 )
slistview.ListItems.Item(i2).Selected = tempHI1( 10 )
slistview.ListItems.Item(i1).Tag = tempHI2( 0 )
slistview.ListItems.Item(i1).Key = tempHI2( 1 )
slistview.ListItems.Item(i1).Text = tempHI2( 2 )
slistview.ListItems.Item(i1).SmallIcon = Val(tempHI2( 3 ))
slistview.ListItems.Item(i1).Icon = Val(tempHI2( 4 ))
slistview.ListItems.Item(i1).ToolTipText = tempHI2( 5 )
slistview.ListItems.Item(i1).ForeColor = Val(tempHI2( 6 ))
slistview.ListItems.Item(i1).Bold = tempHI2( 7 )
slistview.ListItems.Item(i1).Checked = tempHI2( 8 )
slistview.ListItems.Item(i1).Ghosted = tempHI2( 9 )
slistview.ListItems.Item(i1).Selected = tempHI2( 10 )
For i = 1 To iCount
slistview.ListItems.Item(i2).SubItems(i) = tempHI1(i + itCount - 1 )
slistview.ListItems.Item(i1).SubItems(i) = tempHI2(i + itCount - 1 )
Next
' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
itCount = 5
ReDim tempHI1(itCount)
For i = 1 To iCount
tempHI1( 0 ) = slistview.ListItems.Item(i1).ListSubItems(i).Tag
tempHI1( 1 ) = slistview.ListItems.Item(i1).ListSubItems(i).Key
tempHI1( 2 ) = slistview.ListItems.Item(i1).ListSubItems(i).ReportIcon
tempHI1( 3 ) = slistview.ListItems.Item(i1).ListSubItems(i).ToolTipText
tempHI1( 4 ) = slistview.ListItems.Item(i1).ListSubItems(i).ForeColor
tempHI1( 5 ) = CStr (slistview.ListItems.Item(i1).ListSubItems(i).Bold)
tempHI2( 0 ) = slistview.ListItems.Item(i2).ListSubItems(i).Tag
tempHI2( 1 ) = slistview.ListItems.Item(i2).ListSubItems(i).Key
tempHI2( 2 ) = slistview.ListItems.Item(i2).ListSubItems(i).ReportIcon
tempHI2( 3 ) = slistview.ListItems.Item(i2).ListSubItems(i).ToolTipText
tempHI2( 4 ) = slistview.ListItems.Item(i2).ListSubItems(i).ForeColor
tempHI2( 5 ) = CStr (slistview.ListItems.Item(i2).ListSubItems(i).Bold)
slistview.ListItems.Item(i2).ListSubItems(i).Tag = tempHI1( 0 )
slistview.ListItems.Item(i2).ListSubItems(i).Key = tempHI1( 1 )
slistview.ListItems.Item(i2).ListSubItems(i).ReportIcon = Val(tempHI1( 2 ))
slistview.ListItems.Item(i2).ListSubItems(i).ToolTipText = tempHI1( 3 )
slistview.ListItems.Item(i2).ListSubItems(i).ForeColor = Val(tempHI1( 4 ))
slistview.ListItems.Item(i2).ListSubItems(i).Bold = tempHI1( 5 )
slistview.ListItems.Item(i1).ListSubItems(i).Tag = tempHI2( 0 )
slistview.ListItems.Item(i1).ListSubItems(i).Key = tempHI2( 1 )
slistview.ListItems.Item(i1).ListSubItems(i).ReportIcon = Val(tempHI2( 2 ))
slistview.ListItems.Item(i1).ListSubItems(i).ToolTipText = tempHI2( 3 )
slistview.ListItems.Item(i1).ListSubItems(i).ForeColor = Val(tempHI2( 4 ))
slistview.ListItems.Item(i1).ListSubItems(i).Bold = tempHI2( 5 )
Next
End Sub
比如我要交换Listview1的第3行和第4行数据,只要调用 Call SwapList(3,4,Listview1) 即可