VB.NET中使⽤ListView控件的简单例⼦
ListView 控件 在 程序开发过程中的使⽤是⾮常⼴泛的。因为其不⽀持数据库的绑定,所以在数据库程序开发领域⽆法与datagridview抗衡 ,但是ListView的确是⼀个⾮常好⽤的控件。下⾯就把 ⼀个简单的 ListView的例⼦发出来。
Public Class Form6
''' <summary>
''' 英雄类
''' </summary>
''' <remarks></remarks>
Public Class hero
Private s_name As String
Private s_age As Long
Private s_like As String
Public Property myName() As String
Get
Return s_name
End Get
Set(ByVal value As String)
s_name = value
End Set
End Property
Public Property myAge() As Long
Get
Return s_age
End Get
Set(ByVal value As Long)
s_age = value
End Set
End Property
Public Property myLike() As String
Get
Return s_like
End Get
Set(ByVal value As String)
s_like = value
End Set
End Property
End Class
''' <summary>
''' 公共属性
''' </summary>
''' <remarks></remarks>
Dim arrLike() As String = {"杀⼈", "放⽕", "", "抢劫", "盗窃", "上吊", "⾃虐", "赌博", "偷窥", "飙车"}
Dim heroList As New SortedList
Dim maxNumber As Long
Const firstName As String = "塞北的雪"
Dim s_flag As Boolean
''' <summary>
''' ⽣成随即爱好
''' </summary>
''' <param name="i"></param>
''' <returns></returns>
''' <remarks></remarks>
Private Function createLike(ByVal i As Long) As String
Dim j As Long
Dim k As Long
Dim str As New System.Text.StringBuilder
For j = arrLike.GetLowerBound(0) To arrLike.GetUpperBound(0)
Dim rd As New System.Random(Environment.TickCount * (i + 1) * j / 100)
k = System.Math.Round(rd.NextDouble * 100, 0)
If k Mod 2 = 0 Then
str.Append(" ")
str.Append(arrLike(j))
End If
Next
Return str.ToString
End Function
''' <summary>
'''  装载数据
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Clic k
s_flag = True
Me.lv1.CheckBoxes = True
Dim i As Integer
Const maxCount As Long = 10
Dim iItem As ListViewItem
Dim aHero As hero
For i = maxNumber To maxNumber + maxCount - 1
Dim rd As New System.Random(Environment.TickCount * i)
aHero = New hero
iItem = New ListViewItem
iItem.Text = Name
iItem.Tag = aHero
iItem.SubItems.Age)
iItem.SubItems.Like)
Me.lv1.Items.Add(iItem)
heroList.Name, aHero)
Next
maxNumber = i
If Me.lv1.Items.Count > 0 Then
Me.lv1.Items.Item(0).Checked = True
End If
s_flag = False
End Sub
''' <summary>
''' 选定所有项
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub btnCheckAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChec kAll.Click
s_flag = True
If Me.lv1.Items.Count > 0 Then
Dim i As Integer
For i = 0 To Me.lv1.Items.Count - 1
Me.lv1.Items.Item(i).Checked = True
Next
End If
s_flag = False
End Sub
''' <summary>
''' 查所有选定项
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub btnFindCheckted_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn FindCheckted.Click
Dim sb As New System.Text.StringBuilder
If Me.lv1.Items.Count > 0 Then
Dim i As Integer
For i = 0 To Me.lv1.CheckedItems.Count - 1
sb.AppendLine()
sb.Append(Me.lv1.CheckedItems.Item(i).Text)
Next
End If
MsgBox(sb.ToString)
End Sub
''' <summary>
''' 删除所有
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub btnDeleteAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelet eAll.Click
Me.lv1.Items.Clear()
Me.heroList.Clear()
maxNumber = 0
控件的使用
End Sub
''' <summary>
'''  添加⼀项
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub btnAddOne_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddO ne.Click
s_flag = True
Dim iItem As New ListViewItem
Dim aHero As New hero
Dim rd As New System.Random(Environment.TickCount * maxNumber)
iItem.Text = Name
iItem.Tag = aHero
iItem.SubItems.Age)
iItem.SubItems.Like)
Me.lv1.Items.Add(iItem)
heroList.Name, aHero)
s_flag = False
maxNumber += 1
End Sub
Private Sub Form6_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.lv1.View = View.Details
Me.lv1.HeaderStyle = ColumnHeaderStyle.Clickable
Me.lv1.MultiSelect = True
Me.lv1.FullRowSelect = True
Me.lv1.GridLines = True
Me.lv1.Columns.Add("姓名", 120, HorizontalAlignment.Center)
Me.lv1.Columns.Add("年龄", 50, HorizontalAlignment.Right)
Me.lv1.Columns.Add("爱好", 300, HorizontalAlignment.Left)
Dim iItem As New ListViewItem
Dim aHero As New hero
Dim rd As New System.Random(Environment.TickCount)
iItem.Text = Name
iItem.Tag = aHero
iItem.SubItems.Age)
iItem.SubItems.Like)
Me.lv1.Items.Add(iItem)
heroList.Name, aHero)
Me.lv1.Items.Item(0).Selected = True
maxNumber = 0
s_flag = False
End Sub
''' <summary>
''' 删除所有选定项
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub btnDeleteSelected_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt nDeleteSelected.Click
If Me.lv1.Items.Count > 0 Then
If Me.lv1.SelectedItems.Count > 0 Then
Dim i As Integer
Dim delList As New SortedList
For i = 0 To Me.lv1.SelectedItems.Count - 1
heroList.Remove(Me.lv1.SelectedItems.Item(i).Text)
' Me.lv1.Items.Remove(Me.lv1.SelectedItems.Item(i))
delList.Add(Me.lv1.SelectedItems.Item(i).Text, Me.lv1.SelectedItems.Item(i))
Next
For i = 0 To delList.Count - 1
Me.lv1.Items.Remove(delList.GetByIndex(i))
Next
End If
End If
End Sub
Private Sub lv1_ItemCheck(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) H andles lv1.ItemCheck
If Me.lv1.Items.Count > 0 Then
If s_flag = False Then
If e.NewValue = CheckState.Checked And e.CurrentValue <> CheckState.Checked Then
MsgBox("你选择了:" & Me.lv1.Items.Item(e.Index).Text)
ElseIf e.NewValue = CheckState.Unchecked And e.CurrentValue <> CheckState.Unchecked Then
MsgBox("你取消了:" & Me.lv1.Items.Item(e.Index).Text)
End If
End If
End If
End Sub
Private Sub lv1_ItemChecked1(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckedEventA rgs) Handles lv1.ItemChecked
If Me.lv1.Items.Count > 0 Then
If s_flag = False Then
If e.Item.Checked Then
MsgBox("你选择了:" & e.Item.Text)
Else
MsgBox("你取消了:" & e.Item.Text)
End If
End If
End If
End Sub
Private Sub btnUnCheckAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUn CheckAll.Click
s_flag = True
If Me.lv1.Items.Count > 0 Then
Dim i As Integer
For i = 0 To Me.lv1.Items.Count - 1
Me.lv1.Items.Item(i).Checked = False
Next
End If
s_flag = False
End Sub
End Class
程序运⾏的截图如下: