Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

Gewusst wie: Sortieren ein ListView-Steuerelements nach einer Spalte in NET Visual Basic oder Visual Basic 2005

Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 319399
Eine Microsoft Visual C# Net-Version dieses Artikels finden Sie unter 319401.
Eine Microsoft Visual Basic 6.0-Version dieses Artikels finden Sie unter 170884.
Zusammenfassung
Dieser Artikel beschreibt die Vorgehensweise zum Sortieren eines ListView -Steuerelements nach einer Spalte in der .NET Visual Basic oder Visual Basic 2005-Anwendung.

Beim Arbeiten mit dem ListView -Steuerelement, möchten Sie möglicherweise, dass sein Inhalt basierend auf einer bestimmten Spalte sortiert wird. Ein Beispiel für diese Art von Funktionalität tritt in einem Windows Explorer-Programm, wenn Sie den Inhalt eines Ordners auf der Festplatte anzeigen. In der Detailansicht zeigt Windows Explorer Informationen über die Dateien in diesem Ordner. Sie sehen z. B. den Dateinamen, die Dateigröße, den Dateityp und das Datum der Änderung. Wenn Sie einen Spaltenheader klicken, wird die Liste auf Basis dieser Spalte aufsteigend sortiert. Wenn Sie erneut auf dieselbe Spaltenüberschrift klicken, wird die Spalte in absteigender Reihenfolge sortiert.

Das Beispiel in diesem Artikel definiert eine Klasse, die die IComparer -Schnittstelle implementiert. Dieses Beispiel verwendet darüber hinaus die Compare -Methode der Klasse CaseInsenstiveComparer den Vergleich der Elemente ausführen. Beachten Sie, dass diese Methode des Vergleichs werden ("Apple" gilt dasselbe wie "Apple"). Beachten Sie, dass alle Spalten in diesem Beispiel auf "Text" sortiert werden. Wenn Sie auf unterschiedliche Weise sortieren möchten (z. B. numerisch), ersetzen die folgende Codezeile Ansatz zu sortieren, die Sie verwenden möchten:
compareResult = ObjectCompare.Compare(listviewX.SubItems(ColumnToSort).Text, listviewY.SubItems(ColumnToSort).Text)				
back to the top

So erstellen Sie das Beispielprojekt

  1. Erstellen Sie ein neues Visual Basic NET oder Visual Basic 2005-Windows-Anwendung-Projekt. Form1 wird standardmäßig erstellt.

    Hinweis Ändern Sie den Code in Visual Basic 2005. Standardmäßig erstellt Visual Basic zwei Dateien für das Projekt beim Erstellen von Windows Forms-Projekt. Wenn das Formular Form1 heißt, werden die beiden Dateien, die das Formular darstellen Form1.vb und Form1.Designer.vb genannt. Sie schreiben den Code in der Datei Form1.vb. Windows Forms-Designer schreibt den Code in der Datei Form1.Designer.vb. Windows Forms-Designer verwendet das partial-Schlüsselwort auf die Implementierung von Form1 in zwei separate Dateien aufzuteilen. Dieses Verhalten verhindert, dass der vom Designer generierte Code mit Ihrem Code vermischt wird.

    Weitere Informationen über die neuen Funktionen von Visual Basic 2005 Sprache finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website: Weitere Informationen zu partiellen Klassen und Windows Forms-Designer finden Sie auf der folgenden MSDN-Website:
  2. Fügen Sie ein ListView -Steuerelement zu Form1 hinzu. Skalieren Sie das Formular, um mehrere Zoll breiten Byseveral Zoll hoch.
  3. Fügen Sie folgenden Code in die Klasse für das Formular ein:
    Private lvwColumnSorter As ListViewColumnSorter					
  4. Fügen Sie folgenden Code in den Konstruktor des Formulars nach dem Aufruf von InitializeComponent -Methode:
    ' Create an instance of a ListView column sorter and assign it ' to the ListView control.lvwColumnSorter = New ListViewColumnSorter()Me.ListView1.ListViewItemSorter = lvwColumnSorter					
  5. Das Load -Ereignis des Formulars den folgenden Code einfügen:
    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. Fügen Sie folgenden Code in das ColumnClick -Ereignis für die Listenansicht:
    ' 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. Klicken Sie im Menü Projekt auf Klasse hinzufügen , um dem Projekt eine neue Klasse hinzufügen.
  8. Ersetzen Sie alle Standardcode in der neuen Klasse durch folgende Code:
    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. Speichern Sie, Erstellen Sie die Anwendung und führen Sie dann das Beispielprojekt aus.
  10. Klicken Sie auf die verschiedenen Spaltenüberschriften im ListView -Steuerelement. Wenn auf den Header wird der Inhalt des ListView -Steuerelements basierend auf Thatyou Spalte aufsteigend sortiert. Wenn Sie erneut auf dieselbe Spaltenüberschrift klicken, wird die Spalte absteigend Sortedin.
back to the top

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 319399 – Letzte Überarbeitung: 10/26/2015 02:28:00 – Revision: 8.0

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

  • kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB319399 KbMtde
Feedback
/html>