Public Class ListViewOperation
    Shared bRowsNum As Boolean = False
'初期化ListView

‘lstCTL :ListView控件变量

’columns() :一维字符串数组,ListView的列标题
    Public Shared Sub list_init(ByRef lstCTL As System.Windows.Forms.ListView, ByVal columns() As String, Optional ByVal RowNum As Boolean = False)

If lstCTL Is Nothing Then
            Exit Sub
        End If

Dim lstComm As System.Windows.Forms.ListView = lstCTL

'clear old data
        lstComm.Items.Clear()
        lstComm.Columns.Clear()
        lstComm.View = View.Details
        lstComm.MultiSelect = True
        lstComm.FullRowSelect = True
        lstComm.HideSelection = False
        Dim strColumn As String

'add RowNum
        bRowsNum = RowNum
        If bRowsNum Then
            lstComm.Columns.Add("   ", 30)
        End If

If columns Is Nothing Then
            lstComm.View = View.List
            lstComm.MultiSelect = False
            Exit Sub
        End If

'set column name
        For Each strColumn In columns
            If strColumn IsNot Nothing Then
                If strColumn.Trim.Equals("") Then
                    Continue For
                End If
                lstComm.Columns.Add(strColumn, strColumn.Length * 6 + 50)
            End If

If strColumn Is Nothing Then
                Exit For
            End If
        Next

'set gridline type
        lstComm.GridLines = True
    End Sub

''' <summary>
    ''' 从ListView最后一行开始添加数据行
    ''' </summary>
    ''' <param name="lstCTL">ListView控件变量</param>
    ''' <param name="strItems">二维数组 第二维是行,第一维是一行的所有列</param>
    ''' <remarks></remarks>
    Public Shared Sub list_addData(ByRef lstCTL As System.Windows.Forms.ListView, ByVal strItems()() As String)

If strItems Is Nothing Then
            Exit Sub
        End If

If lstCTL Is Nothing Then
            Exit Sub
        End If

Dim lstComm As System.Windows.Forms.ListView = lstCTL

Dim RowCounter As Integer
        Dim ColCounter As Integer
        Dim RowCurOrder As Integer = lstComm.Items.Count
        Dim ColStartOrder As Integer
        Dim bRowVaild As Boolean = False
        Dim strColValue As String
        Dim strInvaildRowCount As Integer = 0
        ' add row
        For RowCounter = 0 To UBound(strItems)
            If strItems(RowCounter) IsNot Nothing Then
                bRowVaild = False
                Dim listItem As System.Windows.Forms.ListViewItem
                If bRowsNum Then ' add row number [column]
                    listItem = lstComm.Items.Insert(RowCounter + RowCurOrder, RowCurOrder.ToString)
                    ColStartOrder = 0
                Else
                    'if row info is empty ,not append it
                    If strItems(RowCounter).ToString.Trim.Equals("") Then
                        Continue For
                    End If

'add info to last row
                    strColValue = strItems(RowCounter)(0)
                    listItem = lstComm.Items.Insert(RowCounter + RowCurOrder - strInvaildRowCount, strColValue)
                    ColStartOrder = 1

If Not String.IsNullOrEmpty(strColValue) Then
                        bRowVaild = True
                    End If
                End If

'add column
                For ColCounter = ColStartOrder To strItems(RowCounter).Length - 1

Dim listItemsubItem As New System.Windows.Forms.ListViewItem.ListViewSubItem
                    strColValue = strItems(RowCounter)(ColCounter)
                    listItemsubItem.Text = strColValue
                    listItem.SubItems.Insert(ColCounter, listItemsubItem)
                    If Not String.IsNullOrEmpty(strColValue) Then
                        bRowVaild = True
                    End If

Next ColCounter

'if row'a all column is empty , row is invaild ,so delete it
                If Not bRowVaild Then
                    Dim count As Integer = lstComm.Items.Count
                    lstComm.Items.RemoveAt(count - 1)
                    strInvaildRowCount += 1
                End If
            End If
        Next RowCounter
    End Sub

''' <summary>
    ''' 取得ListView中的所有数据
    ''' </summary>
    ''' <param name="lstCTL"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function list_getData(ByRef lstCTL As System.Windows.Forms.ListView) As String()()

If lstCTL Is Nothing Then
            Return Nothing
        End If

Dim iCount As Integer = lstCTL.Items.Count
        Dim strItems(iCount - 1)() As String
        Dim iLoop As Integer = 0
        Dim iLooop As Integer = 0
        'get list view data info
        For iLoop = 0 To iCount - 1
            Dim strItem As String()
            Dim strCol As String = CStr("")
            Dim start As Integer = 0

'Show RowsNumber
            If bRowsNum Then
                start = 1
            End If
            'get one row info
            For iLooop = start To lstCTL.Items.Item(iLoop).SubItems.Count - 1
                If iLooop <> start Then
                    strCol += ";"
                End If
                strCol += lstCTL.Items.Item(iLoop).SubItems.Item(iLooop).Text
            Next
            strItem = Split(strCol, ";")
            strItems(iLoop) = strItem
        Next
        Return strItems
    End Function

''' <summary>
    ''' 取得ListView中选择的行当数据
    ''' </summary>
    ''' <param name="lstCTL"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function list_getSeledData(ByRef lstCTL As System.Windows.Forms.ListView) As String()()

If lstCTL Is Nothing Then
            Return Nothing
        End If

'get select row count
        Dim iCount As Integer = lstCTL.SelectedItems.Count
        Dim strItems(iCount - 1)() As String
        Dim iLoop As Integer = 0
        Dim iLooop As Integer = 0

'get select info
        For iLoop = 0 To iCount - 1
            Dim strItem As String()
            Dim strCol As String = CStr("")
            Dim start As Integer = 0

'Show RowsNumber
            If bRowsNum Then
                start = 1
            End If
            'get one row info
            For iLooop = start To lstCTL.SelectedItems.Item(iLoop).SubItems.Count - 1
                If iLooop <> start Then
                    strCol += ";"
                End If
                strCol += lstCTL.SelectedItems.Item(iLoop).SubItems.Item(iLooop).Text
            Next
            strItem = Split(strCol, ";")
            strItems(iLoop) = strItem
        Next

Return strItems
    End Function

''' <summary>
    ''' 删除选择的行
    ''' </summary>
    ''' <param name="lstCTL"></param>
    ''' <remarks></remarks>
    Public Shared Sub list_DelData(ByRef lstCTL As System.Windows.Forms.ListView)
        Dim selCount As Integer = lstCTL.SelectedItems.Count
        Dim iLoop As Integer
        If selCount >= 1 Then
            For iLoop = selCount - 1 To 0 Step -1
                lstCTL.SelectedItems.Item(iLoop).Remove()
            Next
        End If
    End Sub

''' <summary>
    ''' 删除listView中的所有数据
    ''' </summary>

''' <param name="lstCTL"></param>
    ''' <remarks></remarks>
    Public Shared Sub list_DelAllData(ByRef lstCTL As System.Windows.Forms.ListView)

Dim selCount As Integer = lstCTL.Items.Count
        Dim iLoop As Integer
        If selCount >= 1 Then
            For iLoop = selCount - 1 To 0 Step -1
                lstCTL.Items.Item(iLoop).Remove()
            Next iLoop
        End If
    End Sub

''' <summary>
    ''' 更新一行数据
    ''' </summary>
    ''' <param name="lstCTL"></param>

''' <param name="Index ">行号,从0开始</param>

''' <param name="mapColValue ">修改的值对,列番号-列值一一对应</param>
    ''' <remarks></remarks>
    Public Shared Sub list_UpdateSingleData(ByRef lstCTL As System.Windows.Forms.ListView, ByVal Index As Integer, ByVal mapColValue As Map)

Dim selCount As Integer = lstCTL.Items.Count
        Dim iLoop As Integer
        If Index < selCount Then

For iLoop = 0 To mapColValue.count - 1
                lstCTL.Items.Item(Index).SubItems.Item(iLoop).Text = mapColValue.itemValue(iLoop)
                ' lstCTL.Items.Item(Index).SubItems.Item(mapColValue.itemKey(iLoop)) = listItemsubItem
            Next iLoop
        End If
    End Sub

''' <summary>
    ''' delete listview all data info
    ''' </summary>
    ''' <param name="lstCTL"></param>
    ''' <remarks></remarks>
    Public Shared Function list_GetSelIndex(ByRef lstCTL As System.Windows.Forms.ListView) As Integer
        Dim selCount As Integer = lstCTL.Items.Count
        Dim iRetValue As Integer = -1
        If lstCTL.SelectedItems.Count > 0 Then
            iRetValue = lstCTL.SelectedItems.Item(0).Index
        End If
        Return iRetValue
    End Function

End Class

ListView 控制 VB.net相关推荐

  1. js建立excel表格_建立Excel足球联赛表格传统方法与动态数组

    js建立excel表格 介绍 (Introduction) I am going to show you the different ways you can build a football lea ...

  2. 互联网最新开发语言_互联网是多语言的,但您需要学习普通话

    互联网最新开发语言 The internet is becoming the town square for the global village of tomorrow. - Bill Gates. ...

  3. VB.NET 教程_03_面向对象

    VB.Net - 类与对象 定义类时,可以为数据类型定义蓝图. 这实际上并不定义任何数据,但它定义了类名的含义,即类的对象将包含什么以及可以对这样的对象执行什么操作. 对象是类的实例. 构成类的方法和 ...

  4. vb 数组属性_VB中菜单编辑器的使用讲解及实际应用

    大家好,今天我们共同来学习VB中菜单方面的知识. VB中菜单的基本作用有两个: 1.提供人机对话的界面,以便让使用者选择应用系统的各种功能: 2.管理应用系统,控制各种功能模块的运行. 在实际应用中, ...

  5. vb.net与FLASH的完美结合

    (一)   在VB.net中播放Flash动画 怎样才能在VB.net中加入Flash动画呢?我们只要使用Flash5自带的Shockwave Flash.ocx这个控件就可以了.方法如下: 1.   ...

  6. vb计算机怎么制作,教你如何制作VB的PCode调试器 -电脑资料

    P-Code简介 术语P-Code既不是一个新名词也不是Microsoft的发明,P-Code只是简单地被解释执行的伪指令, MSVBVM50.DLL MSVBVM60.DLL 文件名称清晰的表明是M ...

  7. vant 验证手机号_手机维修英汉小辞典(V字头1:VA-VB)

    V-volt 伏特 V-DCSLNA 1800MHz 低噪声放大器供电 V-GSMLNA 900MHz 低噪声放大器供电 V-ANA 多模转换器电源 V-ANT Voltage Antenna 天线供 ...

  8. 在VS中怎么用vb画矩形_电路图中如何判别NPN与PNP

    点击"电工电气学习"关注即可免费订阅! NPN和PNP主要就是电流方向和电压正负不同,说得"专业"一点,就是"极性"问题. NPN 是用 B ...

  9. 微軟 ASP.NET 2.0 的 AJAX 利劍 ~ Atlas Framework

    MSDN 程式開發講座: 微軟 ASP.NET 2.0 的 AJAX 利劍 - Atlas Framework 作者:奚江華 [ASP.NET網頁設計與C#]書籍作者 DotNet 開發聖殿 Blog ...

最新文章

  1. 用Construct 2制作入门小游戏~
  2. c语言用double最大,C语言里double类型的最大值和最小值是多少?
  3. Angular - angular2升级到angular8
  4. ENVI扩展工具:利用波段运算修改NaN方法总结
  5. easy ui dialog 关闭之后的怪异问题
  6. 毕业这几年的嵌入式开发之路
  7. 12、常见Conditional注解源码解析(ok)
  8. oracle 主键自动地址实现
  9. 在OL6.5_64上安装Oracle11gR2_64
  10. C语言 16进制转float
  11. [Java]面向对象编程
  12. office插件开发_PPT插件——OK之安装篇
  13. Python打印指定日期的日历
  14. C语言EasyX_2018中的putimage(x, y, w, h, img, x1, y1)函数
  15. Fatal signal 11 (SIGSEGV) at 0x00000004 (code=1)
  16. reduce()用法
  17. Qt如何支持高分辨率屏幕(高分屏)
  18. 机票信息全方位实时采集方案
  19. 什么是专利权?专利有多少种类?
  20. 安卓手游模拟器有很多,不同于模拟器的TC Games为什么值得选择?

热门文章

  1. 基于asp.net的登录页面开发
  2. 苹果Mac OS详细介绍
  3. Linux、Ubuntu配置ntpd.conf后时间无法同步的问题
  4. 有关知乎盈利模式的猜想
  5. 13.Unity3D商业游戏源码研究-变身吧主公-SceneShop
  6. 网页设计作业——旅游主题
  7. Android中联系人和通话记录详解(2)
  8. 基本算法-堆积树排序
  9. windows10 k8s_什么是Windows 10 S,它有什么不同?
  10. cctv视频不能看了