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 LongAs String
        
Dim j As Long
        
Dim k As Long
        
Dim str As New System.Text.StringBuilder
        
For j = arrLike.GetLowerBound(0To arrLike.GetUpperBound(0)
            
Dim rd As New System.Random(Environment.TickCount * (i + 1* j / 100)
            k 
= System.Math.Round(rd.NextDouble * 1000)
            
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.Click
        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
            aHero.myName 
= firstName & i.ToString
            aHero.myAge 
= System.Math.Round(rd.NextDouble * 1000)
            aHero.myLike 
= createLike(i)
            iItem.Text 
= aHero.myName
            iItem.Tag 
= aHero
            iItem.SubItems.Add(aHero.myAge)
            iItem.SubItems.Add(aHero.myLike)
            
Me.lv1.Items.Add(iItem)
            heroList.Add(aHero.myName, 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 btnCheckAll.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 btnFindCheckted.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 btnDeleteAll.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 btnAddOne.Click
        s_flag 
= True
        
Dim iItem As New ListViewItem
        
Dim aHero As New hero
        
Dim rd As New System.Random(Environment.TickCount * maxNumber)
        aHero.myName 
= firstName & maxNumber.ToString
        aHero.myAge 
= System.Math.Round(rd.NextDouble * 1000)
        aHero.myLike 
= createLike(maxNumber)
        iItem.Text 
= aHero.myName
        iItem.Tag 
= aHero
        iItem.SubItems.Add(aHero.myAge)
        iItem.SubItems.Add(aHero.myLike)
        
Me.lv1.Items.Add(iItem)
        heroList.Add(aHero.myName, aHero)
        s_flag 
= False
        maxNumber 
+= 1
    
End Sub


    
Private Sub Form6_Load(ByVal sender As ObjectByVal 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)
        aHero.myName 
= "塞北的雪"
        aHero.myAge 
= System.Math.Round(rd.NextDouble * 1000)
        aHero.myLike 
= createLike(1)
        iItem.Text 
= aHero.myName
        iItem.Tag 
= aHero
        iItem.SubItems.Add(aHero.myAge)
        iItem.SubItems.Add(aHero.myLike)
        
Me.lv1.Items.Add(iItem)
        heroList.Add(aHero.myName, 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 btnDeleteSelected.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 ObjectByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles 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 ObjectByVal e As System.Windows.Forms.ItemCheckedEventArgs) 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 btnUnCheckAll.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

 

程序运行的截图如下:

 

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值