Способ сортировки элемента управления ListView по столбцу в Visual Basic.NET или Visual Basic 2005

Переводы статьи Переводы статьи
Код статьи: 319399 - Vizualiza?i produsele pentru care se aplic? acest articol.
Для Microsoft Visual C#.NET версии статьи, см. 319401.
Для этой версии Microsoft Visual Basic 6.0 статьи, см. 170884.
Развернуть все | Свернуть все

В этой статье

Аннотация

Эта статья содержит пошаговые инструкции для сортировки ListView Управление по столбцу в Visual Basic.NET или Visual Basic 2005 приложения.

При работе с ListView элемент управления, может потребоваться выполнить сортировку его содержимого в зависимости от конкретного столбец. Примером такого рода функций происходит в проводнике Windows Программа при просмотре содержимого папки на жестком диске. В состав Вид, обозреватель Windows отображает сведения о файлах в этой папке. Для пример, отображается имя файла, размер файла, тип файла и даты, файл был изменен. При выборе одного из заголовков столбцов списка Сортировка в возрастающем порядке, основанном на этом столбце. При выборе того же столбца Заголовок еще раз, столбец отсортирован в порядке убывания.

Пример в этой статье определяется класс, который реализует IComparer интерфейс. Кроме того, в этом примере используется Сравнение метод CaseInsenstiveComparer класс выполняет фактическое сравнение элементов. Обратите внимание, что Этот метод сравнения не чувствительны к регистру («Apple» считается Аналогично "apple"). Кроме того, что все столбцы в данном примере Сортировка в режиме «текст». Если требуется отсортировать другим способом (такие как числовое значение данного параметра) можно заменить следующий код из двух подход к сортировке, который необходимо использовать:
compareResult = ObjectCompare.Compare(listviewX.SubItems(ColumnToSort).Text, listviewY.SubItems(ColumnToSort).Text)
				

Как создать пример проекта

  1. Создайте новый проект Visual Basic.NET или приложения Windows Visual Basic 2005 проекта. По умолчанию создается форма Form1.

    Примечание Необходимо изменить код в Visual Basic 2005. По умолчанию Visual Basic создает два файла проекта при создании проекта Windows Forms. Если форму с именем Form1, два файла, которые представляют собой форму именами Form1.vb и Form1.Designer.vb. Напишите код в файл Form1.vb. Конструктор Windows Forms записывает код в файле Form1.Designer.vb. Конструктор Windows Forms использует ключевое слово partial разделить на два отдельных файла реализации класса Form1. Такое поведение предотвращает код, созданный конструктором перемежаемых кода.

    Для получения дополнительных сведений о новых улучшений языка Visual Basic 2005 посетите следующий веб-узел Microsoft Developer Network (MSDN):
    http://msdn2.Microsoft.com/en-us/library/ms379584 (vs.80) .aspx
    Для получения дополнительных сведений о разделяемых классов и в конструкторе Windows Forms посетите веб-узле MSDN:
    http://msdn2.Microsoft.com/en-us/library/ms171843.aspx
  2. Добавить ListView элемент управления в форму Form1. Размер формы по ширине быть несколько дюймов несколько дюйма.
  3. Вставьте следующий код в класс формы:
    Private lvwColumnSorter As ListViewColumnSorter
    					
  4. Вставьте следующий код в конструктор формы После вызова Метод InitializeComponent метод:
    ' Create an instance of a ListView column sorter and assign it 
    ' to the ListView control.
    lvwColumnSorter = New ListViewColumnSorter()
    Me.ListView1.ListViewItemSorter = lvwColumnSorter
    					
  5. Вставьте следующий код в Загрузка событие формы:
    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. Вставьте следующий код в ColumnClick событие 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. На Проект меню, нажмите кнопку Добавление класса Чтобы добавить новый класс в проект.
  8. Замените весь код по умолчанию в новый класс с Следующий код:
    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. Сохраните, построение и запустите образец проекта.
  10. Выберите различные заголовки столбцов в ListView элемент управления. Если щелкнуть заголовок, содержимое ListView элемент управления, сортируются по возрастанию, основанный на столбце, Нажмите эту кнопку. Если щелкнуть один и тот же заголовок столбца, столбец сортируется в порядке убывания.

Свойства

Код статьи: 319399 - Последний отзыв: 7 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Ключевые слова: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB319399 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:319399

Отправить отзыв

 

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