VB.NET中LISTVIEW排序(原创-示例版)

使用vb.net 对 Windows Form 按列排序 ListView 项目 使用 Windows Form 按列排序 ListView 项目摘要: 说明如何根据所单击的列在 Microsoft .NET 中的 ListView 控件提供项目排序。简介ListView 控件是显示文件系统信息和显示 XML 或数据库数据的非常好的方式。ListView 控件通常用于显示表示项目以及项目文本的图形图标。此外,ListView 控件还可以用于显示有关子项目中项目的其他 阅读详情

VB.NET中ListView加载数据和排序功能的实现

        平时我们在VB.NET中开发数据库相关的程序都会用到DataGrid来显示数据,它的使用相对简单,也有排序的功能,基本能满一般的要求。但有时它并不能满足项目的功能需求,这时我们就想到了用ListView,虽然它的功能正是我们所要的,必竞它不是一个数据库的控件,不能像DataGrid那样通过简单的设置就可以显示数据,同时也没有排序的功能,这些就要我们自已用程序代码来实现了。前些天在开发一个项目时就写了一段使用ListView显示数据并实现排序的代码,简单地说一下它的实现原理:显示数据是通过循环读取数据记录,用ListView的Add方法将数据添加到ListView中;排序的功能是通过ListView列的点击事件来得到要排序的字段,再使用ORDER BY关键字组合SQL重新加载数据来实现排序的。欢迎使用VB.NTE的朋友一起交流,我的EMAIL是ztqas@126.com。
   
    以下是程序所使用的数据库及控件的设置信息:

数据库名:Northwind(SQL SERVER 2000中自带的,如果没有此数据库请先建立)
表    名:Products(如果没有这个表,请使用后面附带的SQL语句建立)

窗 体 名:frmListViewDb

所用控件

Label    1个
属性:Text=ProductName:

-----------------------------------------------------

TextBox  1个
属性:Name=txtProductName

-----------------------------------------------------

Button   5个
(1) 属性:Name=btnFilter、Text=过滤
(2) 属性:Name=btnShowAll、Text=全部
(3) 属性:Name=btnSelAll、Text=全选
(4) 属性:Name=btnCancelSelAll、Text=取消全选
(5) 属性:Name=btnInsteadSel、Text=反选
(5) 属性:Name=btnInfo、Text=查看

ListView   1个
属性:Name=ListViewDb、View=Details、Sorting=None、GridLines=True,FullRowSelect=True,CheckBoxs=True,Size=856,416、Columns添加10个列,Width=150,Text分别为:ProductID,ProductName,SupplierID,CategoryID,QuantityPerUnit,UnitPrice,UnitsInStock,UnitsOnOrder,ReorderLevel,Discontinued

    源程序:
Imports System.Data.SqlClient
Public Class frmListViewDb
    Inherits System.Windows.Forms.Form

    '定义数据库连接对象
    Dim sdConn As New SqlConnection
    Dim conString As String = "data source=127.0.0.1;initial catalog=Northwind;uid=sa;password=123456"

    '定义记录db2ListView执行状态的变量
    Dim Dbr As Integer

    '定义记录默认排序方式的变量
    Dim mySort As String = "ASC"

    '定义记录默认排序字段的变量
    Dim myField As String = "ProductID"

    '定义记录上次排序的字段在LISTVIEW中的列ID的变量
    Dim pOrderID As Integer = 0

    '定义复选操作的相关变量
    Dim i As Integer
    Dim sCount As Integer

#Region " Windows 窗体设计器生成的代码 "

    Public Sub New()
        MyBase.New()

        '该调用是 Windows 窗体设计器所必需的。
        InitializeComponent()

        '在 InitializeComponent() 调用之后添加任何初始化

    End Sub

    '窗体重写 dispose 以清理组件列表。
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Windows 窗体设计器所必需的
    Private components As System.ComponentModel.IContainer

    '注意: 以下过程是 Windows 窗体设计器所必需的
    '可以使用 Windows 窗体设计器修改此过程。
    '不要使用代码编辑器修改它。
    Friend WithEvents txtProductName As System.Windows.Forms.TextBox
    Friend WithEvents btnFilter As System.Windows.Forms.Button
    Friend WithEvents btnShowAll As System.Windows.Forms.Button
    Friend WithEvents ListViewDb As System.Windows.Forms.ListView
    Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader
    Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader
    Friend WithEvents ColumnHeader3 As System.Windows.Forms.ColumnHeader
    Friend WithEvents ColumnHeader4 As System.Windows.Forms.ColumnHeader
    Friend WithEvents ColumnHeader5 As System.Windows.Forms.ColumnHeader
    Friend WithEvents ColumnHeader6 As System.Windows.Forms.ColumnHeader
    Friend WithEvents ColumnHeader7 As System.Windows.Forms.ColumnHeader
    Friend WithEvents ColumnHeader8 As System.Windows.Forms.ColumnHeader
    Friend WithEvents ColumnHeader9 As System.Windows.Forms.ColumnHeader
    Friend WithEvents ColumnHeader10 As System.Windows.Forms.ColumnHeader
    Friend WithEvents Label1 As System.Windows.Forms.Label
    Friend WithEvents btnSelAll As System.Windows.Forms.Button
    Friend WithEvents btnCancelSelAll As System.Windows.Forms.Button
    Friend WithEvents btnInsteadSel As System.Windows.Forms.Button
    Friend WithEvents btnInfo As System.Windows.Forms.Button
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.ListViewDb = New System.Windows.Forms.ListView
        Me.ColumnHeader1 = New System.Windows.Forms.ColumnHeader
        Me.ColumnHeader2 = New System.Windows.Forms.ColumnHeader
        Me.ColumnHeader3 = New System.Windows.Forms.ColumnHeader
        Me.ColumnHeader4 = New System.Windows.Forms.ColumnHeader
        Me.ColumnHeader5 = New System.Windows.Forms.ColumnHeader
        Me.ColumnHeader6 = New System.Windows.Forms.ColumnHeader
        Me.ColumnHeader7 = New System.Windows.Forms.ColumnHeader
        Me.ColumnHeader8 = New System.Windows.Forms.ColumnHeader
        Me.ColumnHeader9 = New System.Windows.Forms.ColumnHeader
        Me.ColumnHeader10 = New System.Windows.Forms.ColumnHeader
        Me.txtProductName = New System.Windows.Forms.TextBox
        Me.btnFilter = New System.Windows.Forms.Button
        Me.btnShowAll = New System.Windows.Forms.Button
        Me.Label1 = New System.Windows.Forms.Label
        Me.btnSelAll = New System.Windows.Forms.Button
        Me.btnCancelSelAll = New System.Windows.Forms.Button
        Me.btnInsteadSel = New System.Windows.Forms.Button
        Me.btnInfo = New System.Windows.Forms.Button
        Me.SuspendLayout()
        '
        'ListViewDb
        '
        Me.ListViewDb.CheckBoxes = True
        Me.ListViewDb.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader1, Me.ColumnHeader2, Me.ColumnHeader3, Me.ColumnHeader4, Me.ColumnHeader5, Me.ColumnHeader6, Me.ColumnHeader7, Me.ColumnHeader8, Me.ColumnHeader9, Me.ColumnHeader10})
        Me.ListViewDb.FullRowSelect = True
        Me.ListViewDb.GridLines = True
        Me.ListViewDb.Location = New System.Drawing.Point(8, 64)
        Me.ListViewDb.Name = "ListViewDb"
        Me.ListViewDb.Size = New System.Drawing.Size(856, 416)
        Me.ListViewDb.TabIndex = 0
        Me.ListViewDb.View = System.Windows.Forms.View.Details
        '
        'ColumnHeader1
        '
        Me.ColumnHeader1.Text = "ProductID"
        Me.ColumnHeader1.Width = 100
        '
        'ColumnHeader2
        '
        Me.ColumnHeader2.Text = "ProductName"
        Me.ColumnHeader2.Width = 150
        '
        'ColumnHeader3
        '
        Me.ColumnHeader3.Text = "SupplierID"
        Me.ColumnHeader3.Width = 150
        '
        'ColumnHeader4
        '
        Me.ColumnHeader4.Text = "CategoryID"
        Me.ColumnHeader4.Width = 150
        '
        'ColumnHeader5
        '
        Me.ColumnHeader5.Text = "QuantityPerUnit"
        Me.ColumnHeader5.Width = 150
        '
        'ColumnHeader6
        '
        Me.ColumnHeader6.Text = "UnitPrice"
        Me.ColumnHeader6.Width = 150
        '
        'ColumnHeader7
        '
        Me.ColumnHeader7.Text = "UnitsInStock"
        Me.ColumnHeader7.Width = 150
        '
        'ColumnHeader8
        '
        Me.ColumnHeader8.Text = "UnitsOnOrder"
        Me.ColumnHeader8.Width = 150
        '
        'ColumnHeader9
        '
        Me.ColumnHeader9.Text = "ReorderLevel"
        Me.ColumnHeader9.Width = 150
        '
        'ColumnHeader10
        '
        Me.ColumnHeader10.Text = "Discontinued"
        Me.ColumnHeader10.Width = 150
        '
        'txtProductName
        '
        Me.txtProductName.Font = New System.Drawing.Font("宋体", 12.0!)
        Me.txtProductName.Location = New System.Drawing.Point(88, 16)
        Me.txtProductName.Name = "txtProductName"
        Me.txtProductName.Size = New System.Drawing.Size(200, 26)
        Me.txtProductName.TabIndex = 1
        Me.txtProductName.Text = ""
        '
        'btnFilter
        '
        Me.btnFilter.Location = New System.Drawing.Point(296, 16)
        Me.btnFilter.Name = "btnFilter"
        Me.btnFilter.Size = New System.Drawing.Size(75, 26)
        Me.btnFilter.TabIndex = 2
        Me.btnFilter.Text = "过滤"
        '
        'btnShowAll
        '
        Me.btnShowAll.Location = New System.Drawing.Point(384, 16)
        Me.btnShowAll.Name = "btnShowAll"
        Me.btnShowAll.Size = New System.Drawing.Size(75, 26)
        Me.btnShowAll.TabIndex = 3
        Me.btnShowAll.Text = "全部"
        '
        'Label1
        '
        Me.Label1.Location = New System.Drawing.Point(8, 21)
        Me.Label1.Name = "Label1"
        Me.Label1.Size = New System.Drawing.Size(80, 16)
        Me.Label1.TabIndex = 4
        Me.Label1.Text = "ProductName:"
        '
        'btnSelAll
        '
        Me.btnSelAll.Location = New System.Drawing.Point(472, 16)
        Me.btnSelAll.Name = "btnSelAll"
        Me.btnSelAll.Size = New System.Drawing.Size(75, 26)
        Me.btnSelAll.TabIndex = 5
        Me.btnSelAll.Text = "全选"
        '
        'btnCancelSelAll
        '
        Me.btnCancelSelAll.Location = New System.Drawing.Point(560, 16)
        Me.btnCancelSelAll.Name = "btnCancelSelAll"
        Me.btnCancelSelAll.Size = New System.Drawing.Size(65, 26)
        Me.btnCancelSelAll.TabIndex = 6
        Me.btnCancelSelAll.Text = "取消全选"
        '
        'btnInsteadSel
        '
        Me.btnInsteadSel.Location = New System.Drawing.Point(640, 16)
        Me.btnInsteadSel.Name = "btnInsteadSel"
        Me.btnInsteadSel.Size = New System.Drawing.Size(75, 26)
        Me.btnInsteadSel.TabIndex = 7
        Me.btnInsteadSel.Text = "反选"
        '
        'btnInfo
        '
        Me.btnInfo.Location = New System.Drawing.Point(728, 16)
        Me.btnInfo.Name = "btnInfo"
        Me.btnInfo.Size = New System.Drawing.Size(75, 26)
        Me.btnInfo.TabIndex = 7
        Me.btnInfo.Text = "查看"
        '
        'frmListViewDb
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
        Me.ClientSize = New System.Drawing.Size(872, 493)
        Me.Controls.Add(Me.btnInsteadSel)
        Me.Controls.Add(Me.btnCancelSelAll)
        Me.Controls.Add(Me.btnSelAll)
        Me.Controls.Add(Me.Label1)
        Me.Controls.Add(Me.btnShowAll)
        Me.Controls.Add(Me.btnFilter)
        Me.Controls.Add(Me.txtProductName)
        Me.Controls.Add(Me.ListViewDb)
        Me.Controls.Add(Me.btnInfo)
        Me.Name = "frmListViewDb"
        Me.Text = "ListView加载数据排序功能"
        Me.ResumeLayout(False)

    End Sub

#End Region

    '***************************************************************************
    '函数功能:将读取出来的数据写入LISTVIEW中
    '函数名称:sd_Db2Listview,调用格式:sd_Db2Listview("A"),sd_Db2Listview("")
    '参    数:FilerStr,要查询的产品名,为空时则查询所有的
    '返 回 值:1为正常,-1为有错误
    '编 写 者:SD
    '日    期:2005-9-23
    '转载请保留此信息
    '***************************************************************************
    Private Function sd_Db2Listview(ByVal FilerStr As String) As Integer
        Try
            Cursor.Current = Cursors.WaitCursor

            '清除LISTVIEW中已有的数据
            ListViewDb.Items.Clear()

            Dim varSQL As String

            '定义数据库操作对象
            Dim cmd As SqlCommand
            Dim rd As SqlDataReader

            '定义LISTVIEW中的项目,用于写入数据
            Dim lsv As ListViewItem

            '建立数据库连接
            sdConn = New SqlConnection(conString)
            sdConn.Open()

            '构造查询及排序的SQL语句
            If FilerStr.Length > 0 Then
                varSQL = "SELECT * FROM Products WHERE ProductName LIKE '" & FilerStr & "%' ORDER BY " & myField & " " & mySort & ";"
            Else
                varSQL = "SELECT * FROM Products ORDER BY " & myField & " " & mySort & ";"
            End If

            '读取数据
            cmd = New SqlCommand(varSQL, sdConn)
            rd = cmd.ExecuteReader

            '写入数据到LISTVIEW中
            While rd.Read
                lsv = New ListViewItem(rd("ProductID").ToString)

                lsv.SubItems.Add(rd("ProductName").ToString)
                lsv.SubItems.Add(rd("SupplierID").ToString)
                lsv.SubItems.Add(rd("CategoryID").ToString)
                lsv.SubItems.Add(rd("QuantityPerUnit").ToString)
                lsv.SubItems.Add(rd("UnitPrice").ToString)
                lsv.SubItems.Add(rd("UnitsInStock").ToString)
                lsv.SubItems.Add(rd("UnitsOnOrder").ToString)
                lsv.SubItems.Add(rd("ReorderLevel").ToString)
                lsv.SubItems.Add(rd("Discontinued").ToString)

                ListViewDb.Items.Add(lsv)
            End While

            sdConn.Close()

            Cursor.Current = Cursors.Default
            Return sd_Db2Listview = 1
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
            Return sd_Db2Listview = -1
        Finally
            If sdConn.State = ConnectionState.Open Then
                sdConn.Close()
            End If
        End Try
    End Function

    '启动时即显示所有数据
    Private Sub frmListViewDb_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dbr = sd_Db2Listview("")
    End Sub

    '过滤显示数据
    Private Sub btnFilter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFilter.Click
        Try
            Dim FilerStr As String = ""
            FilerStr = txtProductName.Text.Trim().Replace("'", "")
            dbr=sd_Db2Listview(FilerStr)
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        Finally
            If sdConn.State = ConnectionState.Open Then
                sdConn.Close()
            End If
        End Try
    End Sub

    '显示所有数据
    Private Sub btnShowAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowAll.Click
        sd_Db2Listview("")
    End Sub

    '处理排序
    Private Sub ListViewDb_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListViewDb.ColumnClick
        '根据点击的列ID,得到排序的字段名
        Select Case e.Column.ToString
            Case 0
                myField = "ProductID"
            Case 1
                myField = "ProductName"
            Case 2
                myField = "SupplierID"
            Case 3
                myField = "CategoryID"
            Case 4
                myField = "QuantityPerUnit"
            Case 5
                myField = "UnitPrice"
            Case 6
                myField = "UnitsInStock"
            Case 7
                myField = "UnitsOnOrder"
            Case 8
                myField = "ReorderLevel"
            Case 9
                myField = "Discontinued"
        End Select

        '清除上次排序列的标记
        ListViewDb.Columns(pOrderID).Text = ListViewDb.Columns(pOrderID).Text.Replace(" ▼", "").Replace(" ▲", "")

        '显示排序方式
        If mySort = "ASC" Then
            ListViewDb.Columns(e.Column.ToString).Text = ListViewDb.Columns(e.Column.ToString).Text & " ▼"
            mySort = "DESC"
        Else
            mySort = "ASC"
            ListViewDb.Columns(e.Column.ToString).Text = ListViewDb.Columns(e.Column.ToString).Text & " ▲"
        End If

        '重新加载数据
        sd_Db2Listview(txtProductName.Text.Trim())
        ListViewDb.Refresh()

        '记住上次排序的列ID,以便清除,否则将会出现排序过的列都有排序的标记
        pOrderID = e.Column.ToString
    End Sub

    '全选
    Private Sub btnSelAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelAll.Click
        sCount = ListViewDb.Items.Count - 1

        For i = 0 To sCount
            ListViewDb.Items(i).Checked = True
        Next i
    End Sub

    '取消全选
    Private Sub btnCancelSelAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelSelAll.Click
        sCount = ListViewDb.Items.Count - 1

        For i = 0 To sCount
            ListViewDb.Items(i).Checked = False
        Next i
    End Sub

    '反选
    Private Sub btnInsteadSel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsteadSel.Click
        sCount = ListViewDb.Items.Count - 1

        For i = 0 To sCount
            If ListViewDb.Items(i).Checked Then
                ListViewDb.Items(i).Checked = False
            Else
                ListViewDb.Items(i).Checked = True
            End If
        Next i
    End Sub

    '得到复选框选择的ID
    Private Sub btnInfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInfo.Click
        Dim SelLst As String = ""
        Dim unSelLst As String = ""

        sCount = ListViewDb.Items.Count - 1

        For i = 0 To sCount
            If ListViewDb.Items(i).Checked Then
                SelLst = SelLst & ListViewDb.Items(i).SubItems(0).Text.ToString() & ","
            Else
                unSelLst = unSelLst & ListViewDb.Items(i).SubItems(0).Text.ToString() & ","
            End If
        Next i

        If SelLst.Length > 0 Then
            MsgBox("复选框选中的记录ID有:" & SelLst, MsgBoxStyle.Information)
        End If

        If unSelLst.Length > 0 Then
            MsgBox("复选框未选中的记录ID有:" & unSelLst, MsgBoxStyle.Information)
        End If
    End Sub
End Class

    附:
    生成Products表的SQL语句:
CREATE TABLE [dbo].[Products] (
 [ProductID] [int] IDENTITY (1, 1) NOT NULL ,
 [ProductName] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [SupplierID] [int] NULL ,
 [CategoryID] [int] NULL ,
 [QuantityPerUnit] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
 [UnitPrice] [money] NULL ,
 [UnitsInStock] [smallint] NULL ,
 [UnitsOnOrder] [smallint] NULL ,
 [ReorderLevel] [smallint] NULL ,
 [Discontinued] [bit] NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[Products] ADD
 CONSTRAINT [DF_Products_UnitPrice] DEFAULT (0) FOR [UnitPrice],
 CONSTRAINT [DF_Products_UnitsInStock] DEFAULT (0) FOR [UnitsInStock],
 CONSTRAINT [DF_Products_UnitsOnOrder] DEFAULT (0) FOR [UnitsOnOrder],
 CONSTRAINT [DF_Products_ReorderLevel] DEFAULT (0) FOR [ReorderLevel],
 CONSTRAINT [DF_Products_Discontinued] DEFAULT (0) FOR [Discontinued],
 CONSTRAINT [PK_Products] PRIMARY KEY  CLUSTERED
 (
  [ProductID]
 )  ON [PRIMARY] ,
 CONSTRAINT [CK_Products_UnitPrice] CHECK ([UnitPrice] >= 0),
 CONSTRAINT [CK_ReorderLevel] CHECK ([ReorderLevel] >= 0),
 CONSTRAINT [CK_UnitsInStock] CHECK ([UnitsInStock] >= 0),
 CONSTRAINT [CK_UnitsOnOrder] CHECK ([UnitsOnOrder] >= 0)
GO

ALTER TABLE [dbo].[Products] ADD
 CONSTRAINT [FK_Products_Categories] FOREIGN KEY
 (
  [CategoryID]
 ) REFERENCES [dbo].[Categories] (
  [CategoryID]
 ),
 CONSTRAINT [FK_Products_Suppliers] FOREIGN KEY
 (
  [SupplierID]
 ) REFERENCES [dbo].[Suppliers] (
  [SupplierID]
 )
GO

 

点击 Listview 取得 行 列 位置 复制行 列内容 导出 csv vb.net 点击 Listview 取得 行 列 位置 并 复制列内容 vb.net Dim m_MBRpt As Point Private Sub COPYCOLUMN_Click(sender As Object, e As EventArgs) Handles COPYCOLUMN.Click Try Dim hti As ListViewHitTestInfo = ListView1.HitTest(m_MBRpt) If hti 阅读详情

相关推荐

单击ListView列标题实现项排序功能

单击ListView列标题实现项排序功能:说明:ListView1是一个ListView,添加ColumnClick事件处理函数ListView1_ColumnClick    Private Sub ListView1_ColumnClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ColumnClickE

人生倒计时 2406

VB.NET中ListView控件的操作

<!-- @font-face {font-family:宋体} @font-face {font-family:"cambria math"} @font-face {font-family:新宋体} @font-face {font-family:"@新宋体"} @font-face {font-family:"@宋体"} p.msonormal, li.mso

changhong_sd的专栏 3795

77、VB.NET 中 ListView 和 TreeView 控件的使用指南

本博客详细介绍了 VB.NET 中 ListView 和 TreeView 控件的使用方法,涵盖基础操作如创建项与子项、设置标题、填充控件、枚举项、排序功能及处理所选项目等内容。同时通过示例项目 ListViewDemo 和 CustomExplorer 展示了如何结合这两个控件开发功能丰富、交互性强的应用程序。适合初学者和开发者深入了解控件机制及实际应用。

carrot的博客 207

VB.NET中LISTVIEW控件点击列首排序问题

<br />最近写的程序需要点击LISTVIEW控件的列首排序,搜索了一下网上的文章代码,很少,而且是C#的代码,看了下MSDN,终于搞清楚了VB的写法,MSDN上只有按照字母顺序排序的,于是我加工了一下,可以选择按照数字、时间排序。<br />LISTVIEW控件名是LV1<br /> <br />    Private Sub LV1_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventA

truegy的专栏 3258

VB中ListView控件应用指南与示例

ListView控件允许开发者在列表中展示数据项,这些数据项可以是简单的文本,也可以是带有图标和子项的复杂组合。它通常用于创建文件管理器、联系人列表以及其他需要对数据项进行分组和排序的应用。在第二章中,我们介绍了ListView控件的基本使用和集成方法,接下来我们将深入探讨如何通过高级功能和自定义设置,来增强ListView控件的用户体验和功能性。ListView的列头(ColumnHeader)是展示数据的一个重要组成部分,自定义列头样式可以让数据展示更加直观和美观。

weixin_42452924的博客 1117

VB6.0中ListView控件综合应用实战详解

若强调图形化表达 → 优先考虑LargeIcon若需平衡图标与文字信息密度 →SmallIcon更合适若追求极致简洁与快速加载 →List是轻量级选择若涉及结构化数据分析 → 必选Details是ListView控件用于描述每一列标题的类,它承载了列名、宽度、对齐方式等视觉属性。正确地配置这些列头是构建可读性强、用户体验良好的数据表格的前提。无论是静态设计阶段还是运行时动态调整,开发者都必须掌握对集合的精确操控能力。尽管ListView。

weixin_42466857的博客 1201

VB.NET中LISTVIEW排序(原创)

控件:TEXTBOX    :1个       Name:txtJobNoBUTTON:     2个       Name:btnFilter,btnShowAllLISTVIEW :  1个       Name:lstvwJobNo  Columns:JobNo,ContainerID,CartonID,PO,Style,Color,Size,ShipMent,Factory        

TSD的专栏 3663

VB ListView控件高级应用实例剖析

在现代软件界面设计中,ListView控件作为展示列表信息的核心组件,提供了丰富多样的数据展示方式。开发者可以利用ListView控件展示如文件系统信息、数据库查询结果等大量结构化数据。本章将从基础入手,介绍ListView的基本结构以及如何在.NET框架中初始化ListView控件,并对其核心概念进行简单说明。在Windows应用程序开发中,ListView控件经常被用来展示信息列表。它能够以不同的视图形式(如大图标、小图标、列表或详细信息)显示数据。

weixin_28850145的博客 643

vb.net listview 点击列头排序

【代码】vb.net listview 点击列头排序。

qq398010497的博客 334

VB.NET二维数组快速排序(更新)

VB.NET二维数组快速排序(更新) 'OldArrays(),为排序二维数组;NewArrays(),为存放结果数组,SortColumnsOrOrders(),传递排序参数数组,偶数个为排序列号,奇数为升降序,0为升序,1为降序;FieldRow,是否有字段行(第一行),true为有字段行,false为无字段行,默认为无字段行;TotalRow,是否有统计行(最后一行),true为有统计行,false为无统计行,默认为无统计行;

VB.NET ListView排序类

一个用来排序ListView的类 以下需要在Listview的标题单击事件中加入 Private m_SortingColumn As ColumnHeader Private Sub ListView1_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView1.ColumnClick Dim new_sorting_column As ColumnHeader = sender.Columns(e.Column) Dim sort_order As System.Windows.Forms.SortOrder If m_SortingColumn Is Nothing Then sort_order = SortOrder.Ascending Else If new_sorting_column.Equals(m_SortingColumn) Then If m_SortingColumn.Text.EndsWith(" △") Then sort_order = SortOrder.Descending Else sort_order = SortOrder.Ascending End If Else sort_order = SortOrder.Ascending End If m_SortingColumn.Text = m_SortingColumn.Text.Substring(0, m_SortingColumn.Text.Length - 3) End If m_SortingColumn = new_sorting_column '重新显示列标题 If sort_order = SortOrder.Ascending Then m_SortingColumn.Text &= " △" Else m_SortingColumn.Text &= " ▽" End If sender.ListViewItemSorter = New ClsListViewSorter(e.Column, sort_order) sender.Sort() sender.ListViewItemSorter = Nothing End Sub

vb.net ListView表格控件任意列排序和增加排序小箭头

定义一个clsListviewSorter类

xjnzhidao的博客 2980

自监督学习与上下文赌博机融合:视觉决策中的协同优化与实战指南

在机器学习领域,自监督学习(Self-Supervised Learning)通过设计前置任务从无标注数据中学习通用表征,已成为解决标注数据稀缺问题的关键技术。其核心原理是利用数据自身的结构生成监督信号,训练编码器提取鲁棒特征。上下文赌博机(Contextual Bandits)作为强化学习的简化分支,专注于在给定上下文信息下做出单步最优决策,平衡探索与利用,广泛应用于推荐系统、广告投放等场景。将两者结合,构建端到端的协同训练框架,能让视觉表征的优化直接服务于最终的决策目标,同时利用自监督任务作为正则化项提

weixin_33721344的博客 516

vb.net listview 删除选定行_Listview控件,鼠标点击就可以轻松实现排序功能,真的非常简单...

大家好,我们今日继续讲解VBA代码解决方案的第104讲内容:在Listview控件中排序。在讲控件的时候我首先详细的讲解了TEXTBOX控件,再次详细讲解的就是这个Listview控件了,这些都是常用的控件,熟练的掌握这些对于自己非常的有好处,今天讲的是Listview控件如何进行排序。在使用Listview控件显示报表型的数据时,可能通过单击Listview控件的列标题对列表数据进行排序,真的非...

weixin_39987985的博客 689

小米手机免登录开启USB安装与调试(MIUI 9-11实测,已Root可用)

本文详细介绍了小米手机免登录开启USB安装与调试的底层方案,适用于已Root的MIUI 9-11版本设备。通过修改系统配置、禁用MIUI安装器验证和强制开启USB调试等步骤,帮助开发者绕过账号限制,实现快速调试。文章包含不同MIUI版本的兼容性处理和常见问题解决方法,实测有效。

weixin_33675507的博客 287

PADS导出PCB正反面丝印为CAD文件的方法

本文介绍如何将PADS绘制的pcb格式的PCB文件顶底层丝印及板框导出为CAD的dxf文件格式,并且将底层丝印进行镜像为正常视角

luguodeyo的博客 3291

重写ListView控件,实现点击列头排序的功能

.net中的ListView列表控件默认只能实现按第一列排序的功能,而且只能按字符串排序。由于项目需要重写了一个控件。继承自ListVIew,实现了能按每个列排序的功能,而且可以为每一列指定排序方式(数字,字符串,时间)。完整代码如下:using System;using System.Collections;using System.ComponentModel;using System

zsyzsj的专栏 1956

头歌OpenGauss数据库-G.视图的使用

OpenGauss数据库-G.视图的使用

python一生之敌的博客 1383

Listview列排序的bug原因

因为listview会定期重建,所以发现单击列重新排序时,自定义的比较方法出现错误,最后发现,原因是我的listview的习惯还是vb的习惯:先添加一个关键字,得到一个item,再为item增加subitem。但由于在加入listitem时就会排序,结果排序列尚未创建,所以老是出错。 解决办法很简单,一次创建好listviewitem,一次创建就好了。 转载于:https...

weixin_34007906的博客 126

基于ART算法和SIRT算法的超声CT反演及MATLAB代码实现

在超声CT中,反演算法起着至关重要的作用,它通过从测量数据中恢复出目标物体的内部结构。本文将介绍基于ART算法(Algebraic Reconstruction Technique)和SIRT算法(Simultaneous Iterative Reconstruction Technique)的超声CT反演方法,并提供相应的MATLAB代码实现。本文介绍了基于ART算法和SIRT算法的超声CT反演方法,并提供了相应的MATLAB代码示例。基于ART算法和SIRT算法的超声CT反演及MATLAB代码实现。

2301_79326510的博客 566

QCC305x-QCC304x系列开发教程之应用程序子系统详解 嵌入式

本文对QCC305x-QCC304x系列芯片的应用程序子系统进行了详细解析,并给出了一个LED闪烁的示例代码。嵌入式系统的开发既需要理论知识的支持,也需要实践经验的积累,希望本文能够为读者在QCC305x-QCC304x系列芯片的开发中提供一些有益的指导。QCC305x-QCC304x系列芯片提供了丰富的外设接口,包括UART、SPI、I2C等,开发者可以根据需求选择适合的接口进行数据传输和控制。QCC305x-QCC304x系列芯片的应用程序子系统是整个嵌入式系统的核心部分,负责管理和执行各种应用程序。

CodeMaven的博客 224

ListView 控件的使用

ListView 控件可以用来显示各项带图标的列表,也可以用来显示带有子项的列表,Windows操作系统的资源管理器中文件夹窗口就是最好的应用例子。如下图一所示就是“我的电脑”中使用ListView 控件来显示本机所有盘符:说明:可以通过“查看”菜单来观察其它三种显示方式,这些都是ListView的视图模式之一。下面我们就先来了解下ListView控件的基本应用,在vb.net中的工具

577

【Python爬虫(1)】专栏开篇:夯实Python基础

要想熟练掌握 Python 爬虫技术,扎实的 Python 基础是必不可少的。这就好比建造高楼大厦,Python 基础就是那稳固的基石。只有打好了这个基础,我们才能在爬虫的学习道路上稳步前行,理解并运用各种爬虫技术和框架。

邓邓子的博客 2025

VB.NET中的ListView按列排序

下载,代码很简单就不做太多说明了(包含按日期,数字,字符串排列). 转载于:https://www.cnblogs.com/anqincmt/archive/2005/11/04/268631.html

weixin_30740581的博客 463

安装anaconda3时出现错误:Failed to link extracted packages to D:\anaconda!...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1478

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

为ListView添加自动列宽调整和点击列表头自动排序功能

<br /> <br />.Net 2.0中,ListView中虽然增加了AutoResizeColumns函数,允许自动对列宽进行调整,但是对于其中的<br /> <br />AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)  <br />AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)<br /> <br /> <br />也就是根据内容自动调整大小的效果却差强

fsqcy的专栏 1451

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: 在打印HTML页面时控制分页
下一篇: 获取打开对话框的路径函数
TSD
TSD
博客等级 码龄24年 0粉丝 20原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值