(VB)一个方便你交换Listview中任意两行内容的函数
有时候我们想对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)
NextEnd Sub
比如我要交换Listview1的第3行和第4行数据,只要调用 Call SwapList(3,4,Listview1) 即可