В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

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

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:319399
Для 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)				
back to the top

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

  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): Для получения дополнительных сведений о разделяемых классов и в конструкторе Windows Forms посетите веб-узле MSDN:
  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 = -2Next					
  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 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. На Проект меню, нажмите кнопку Добавление класса Чтобы добавить новый класс в проект.
  8. Замените весь код по умолчанию в новый класс с Следующий код:
    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. Сохраните, построение и запустите образец проекта.
  10. Выберите различные заголовки столбцов в ListView элемент управления. Если щелкнуть заголовок, содержимое ListView элемент управления, сортируются по возрастанию, основанный на столбце, Нажмите эту кнопку. Если щелкнуть один и тот же заголовок столбца, столбец сортируется в порядке убывания.
back to the top

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 319399 — последний просмотр: 06/07/2011 09:52:00 — редакция: 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
Отзывы и предложения