Làm th? nào đ? s?p x?p m?t ListView đi?u khi?n b?i m?t c?t trong Visual Basic.NET hay Visual Basic 2005

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 319399 - Xem s?n ph?m mà bài này áp d?ng vào.
Đ?i v?i m?t Microsoft Visual C#.NET Phiên b?n này vi?t, xem 319401.
Đ?i v?i m?t phiên b?n Microsoft Visual Basic 6.0 này vi?t, xem 170884.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Bài t?ng bư?c này mô t? làm th? nào đ? s?p x?p m?t ListView ki?m soát b?i m?t c?t trong Visual Basic.NET ho?c Visual Basic 2005 ?ng d?ng.

Khi b?n đang làm vi?c v?i các ListView ki?m soát, b?n có th? s?p x?p n?i dung c?a nó d?a trên m?t c? th? c?t. M?t ví d? v? lo?i ch?c năng x?y ra trong Windows Explorer chương tr?nh khi b?n xem các n?i dung c?a m?t thư m?c trên đ?a c?ng c?a b?n. Chi ti?t xem, Windows Explorer hi?n thông tin v? các t?p tin trong thư m?c đó. Cho Ví d?, b?n nh?n th?y tên t?p tin, kích thư?c, ki?u t?p tin và ngày mà các t?p tin đư?c s?a đ?i l?n. Khi b?n b?m vào m?t trong các tiêu đ? c?t, danh sách là đư?c s?p x?p theo th? t? d?a trên c?t tăng d?n. Khi b?n b?m vào trong cùng m?t c?t tiêu đ? m?t l?n n?a, các c?t s?p x?p th? t? gi?m d?n.

Các ví d? trong bài vi?t này đ?nh ngh?a m?t l?p h?c th?c hi?n các IComparer giao di?n. Ngoài ra, ví d? này s? d?ng các So sánh phương pháp c?a các CaseInsenstiveComparer l?p h?c đ? th?c hi?n vi?c so sánh th?c t? c?a các m?c. Lưu ? r?ng phương pháp này so sánh không ph?i là trư?ng h?p nh?y c?m ("Apple" đư?c coi là gi?ng như "apple"). Ngoài ra, lưu ? r?ng t?t c? các c?t trong ví d? này là s?p x?p m?t cách "văn b?n". N?u b?n mu?n s?p x?p m?t cách khác nhau (ch?ng h?n như numerically), b?n có th? thay th? d?ng sau m? v?i tùy theo cái nào cách ti?p c?n đ? phân lo?i mà b?n mu?n dùng:
compareResult = ObjectCompare.Compare(listviewX.SubItems(ColumnToSort).Text, listviewY.SubItems(ColumnToSort).Text)
				

Làm th? nào đ? xây d?ng d? án m?u

  1. T?o ra m?t m?i Visual Basic.NET ho?c ?ng d?ng Windows Visual Basic 2005 d? án. Form1 đư?c t?o ra theo m?c đ?nh.

    Lưu ? B?n ph?i thay đ?i m? trong Visual Basic 2005. Theo m?c đ?nh, Visual Basic t?o hai t?p tin cho d? án khi b?n t?o m?t d? án Windows Forms. N?u m?u đư?c đ?t theo tên Form1, hai t?p tin mà đ?i di?n cho các h?nh th?c đư?c đ?t tên Form1.vb và Form1.Designer.vb. B?n vi?t m? trong t?p tin Form1.vb. Các nhà thi?t k? các h?nh th?c Windows vi?t m? trong t?p tin Form1.Designer.vb. Các nhà thi?t k? các h?nh th?c Windows s? d?ng các t? khóa m?t ph?n đ? phân chia th?c hi?n Form1 thành hai t?p tin riêng bi?t. Hành vi này ngăn c?n các nhà thi?t k? t?o ra m? đư?c xen k? v?i m? c?a b?n.

    Đ? bi?t thêm chi ti?t v? c?i ti?n m?i ngôn ng? Visual Basic 2005, ghé thăm Web site sau c?a Microsoft Developer Network (MSDN):
    http://msdn2.Microsoft.com/en-US/Library/ms379584 (vs.80) .aspx
    Đ? bi?t thêm chi ti?t v? các l?p h?c ph?n và các nhà thi?t k? các h?nh th?c Windows, h?y truy c?p MSDN Web site sau:
    http://msdn2.Microsoft.com/en-US/Library/ms171843.aspx
  2. Thêm m?t ListView ki?m soát đ? Form1. Kích c? h?nh th?c đư?c m?t vài inch r?ng b?i m?t vài inches tall.
  3. Dán đo?n m? sau vào l?p cho các h?nh th?c:
    Private lvwColumnSorter As ListViewColumnSorter
    					
  4. Dán đo?n m? sau vào các nhà xây d?ng c?a các h?nh th?c, sau khi các cu?c g?i đ?n các InitializeComponent phương pháp:
    ' Create an instance of a ListView column sorter and assign it 
    ' to the ListView control.
    lvwColumnSorter = New ListViewColumnSorter()
    Me.ListView1.ListViewItemSorter = lvwColumnSorter
    					
  5. Dán đo?n m? sau vào các T?i s? ki?n c?a các h?nh th?c:
    Dim columnheader As ColumnHeader    ' Used for creating column headers.
    Dim listviewitem As ListViewItem    ' Used for creating ListView items.
    
    ' Make sure that the view is set to show details.
    ListView1.View = View.Details
    
    ' Create some ListView items consisting of first and last names.
    listviewitem = New ListViewItem("Mike")
    listviewitem.SubItems.Add("Nash")
    Me.ListView1.Items.Add(listviewitem)
    
    listviewitem = New ListViewItem("Kim")
    listviewitem.SubItems.Add("Abercrombie")
    Me.ListView1.Items.Add(listviewitem)
    
    listviewitem = New ListViewItem("Sunil")
    listviewitem.SubItems.Add("Koduri")
    Me.ListView1.Items.Add(listviewitem)
    
    listviewitem = New ListViewItem("Birgit")
    listviewitem.SubItems.Add("Seidl")
    Me.ListView1.Items.Add(listviewitem)
    
    ' Create some column headers for the data.
    columnheader = New ColumnHeader()
    columnheader.Text = "First Name"
    Me.ListView1.Columns.Add(columnheader)
    
    columnheader = New ColumnHeader()
    columnheader.Text = "Last Name"
    Me.ListView1.Columns.Add(columnheader)
    
    ' Loop through and size each column header to fit the column header text.
    For Each columnheader In Me.ListView1.Columns
        columnheader.Width = -2
    Next
    					
  6. Dán đo?n m? sau vào các ColumnClick s? ki?n cho các ListView:
    ' Determine if the clicked column is already the column that is 
    ' being sorted.
    If (e.Column = lvwColumnSorter.SortColumn) Then
        ' Reverse the current sort direction for this column.
        If (lvwColumnSorter.Order = SortOrder.Ascending) Then
            lvwColumnSorter.Order = SortOrder.Descending
        Else
            lvwColumnSorter.Order = SortOrder.Ascending
        End If
    Else
        ' Set the column number that is to be sorted; default to ascending.
        lvwColumnSorter.SortColumn = e.Column
        lvwColumnSorter.Order = SortOrder.Ascending
    End If
    
    ' Perform the sort with these new sort options.
    Me.ListView1.Sort()
    					
  7. Trên các D? án tr?nh đơn, nh?p vào Thêm Class đ? thêm m?t l?p m?i cho d? án.
  8. Thay th? t?t c? các m? m?c đ?nh trong l?p h?c m?i v?i các m? sau đây:
    Imports System.Collections
    Imports System.Windows.Forms
    
    Public Class ListViewColumnSorter
        Implements System.Collections.IComparer
    
        Private ColumnToSort As Integer
        Private OrderOfSort As SortOrder
        Private ObjectCompare As CaseInsensitiveComparer
    
        Public Sub New()
            ' Initialize the column to '0'.
            ColumnToSort = 0
    
            ' Initialize the sort order to 'none'.
            OrderOfSort = SortOrder.None
    
            ' Initialize the CaseInsensitiveComparer object.
            ObjectCompare = New CaseInsensitiveComparer()
        End Sub
    
        Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
            Dim compareResult As Integer
            Dim listviewX As ListViewItem
            Dim listviewY As ListViewItem
    
            ' Cast the objects to be compared to ListViewItem objects.
            listviewX = CType(x, ListViewItem)
            listviewY = CType(y, ListViewItem)
    
            ' Compare the two items.
            compareResult = ObjectCompare.Compare(listviewX.SubItems(ColumnToSort).Text, listviewY.SubItems(ColumnToSort).Text)
    
            ' Calculate the correct return value based on the object 
            ' comparison.
            If (OrderOfSort = SortOrder.Ascending) Then
                ' Ascending sort is selected, return typical result of 
                ' compare operation.
                Return compareResult
            ElseIf (OrderOfSort = SortOrder.Descending) Then
                ' Descending sort is selected, return negative result of 
                ' compare operation.
                Return (-compareResult)
            Else
                ' Return '0' to indicate that they are equal.
                Return 0
            End If
        End Function
    
        Public Property SortColumn() As Integer
            Set(ByVal Value As Integer)
                ColumnToSort = Value
            End Set
    
            Get
                Return ColumnToSort
            End Get
        End Property
    
        Public Property Order() As SortOrder
            Set(ByVal Value As SortOrder)
                OrderOfSort = Value
            End Set
    
            Get
                Return OrderOfSort
            End Get
        End Property
    End Class
    					
  9. Ti?t ki?m, xây d?ng, và sau đó ch?y d? án m?u.
  10. Click vào tiêu đ? c?t khác nhau trong các ListView ki?m soát. Khi b?n b?m vào tiêu đ?, n?i dung c?a các ListView đi?u khi?n đư?c s?p x?p trong tăng d?n th? t? d?a trên c?t đó b?n nh?p vào. Khi b?n b?m vào tiêu đ? c?t tương t? m?t l?n n?a, c?t s?p x?p Th? t? gi?m d?n.

Thu?c tính

ID c?a bài: 319399 - L?n xem xét sau cùng: 27 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
T? khóa: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB319399 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:319399

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com