(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)
Next
End Sub

 

比如我要交换Listview1的第3行和第4行数据,只要调用 Call SwapList(3,4,Listview1) 即可

posted on 2010-04-30 17:37  紫林软件  阅读(1897)  评论(0编辑  收藏  举报