Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

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

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
Đố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.
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)				
back to the top

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): Để 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:
  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 = -2Next					
  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 IfElse    ' Set the column number that is to be sorted; default to ascending.    lvwColumnSorter.SortColumn = e.Column    lvwColumnSorter.Order = SortOrder.AscendingEnd 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.CollectionsImports System.Windows.FormsPublic 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 PropertyEnd 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.
back to the top

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 319399 - Xem lại Lần cuối: 08/27/2011 22:59:00 - Bản sửa đổi: 2.0

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB319399 KbMtvi
Phản hồi
mp;t=">