Jak ovládací prvek ListView seřadit podle sloupce v jazyce Visual Basic.ČISTÁ nebo Visual Basic 2005

ID článku: 319399 - Produkty, které se vztahují k tomuto článku.
Pro aplikace Microsoft Visual C#.NET verze tohoto článek naleznete v tématu 319401.
Tato verze aplikace Microsoft Visual Basic 6.0 článek naleznete v tématu 170884.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento podrobný článek popisuje, jak lze řadit Zobrazení ListView řídit sloupec v jazyce Visual Basic.NET nebo jazyka Visual Basic 2005 aplikace.

Když pracujete Zobrazení ListView ovládací prvek, můžete seřadit jeho obsah založený na konkrétní sloupec. Příkladem tohoto typu funkce dochází v aplikaci Windows Explorer program při zobrazení obsahu složky na pevném disku. Podrobnosti Zobrazení Průzkumníka Windows se zobrazí informace o souborech v této složce. Pro například můžete zobrazit název souboru, velikost, typ souboru a datum, Soubor byl změněn. Po klepnutí na záhlaví sloupce, je seznam Uspořádáno vzestupně podle sloupce. Klepnete-li stejný sloupec je opět záhlaví sloupce seřazeny v sestupném pořadí.

Příklad v tomto článku definuje třídu, která implementuje IComparer rozhraní. Navíc v tomto příkladu Porovnat Metoda CaseInsenstiveComparer Třída provádět srovnání skutečné položky. Všimněte si, že Tato metoda porovnání není velká a malá písmena ("Apple" se považuje za stejné jako "apple"). Všimněte si také, že všechny sloupce v tomto příkladu jsou Seřadit způsobem "text". Chcete-li seřadit jiným způsobem (například číselně) můžete nahradit následující řádek kódu, přičemž přístup k řazení, který chcete použít:
compareResult = ObjectCompare.Compare(listviewX.SubItems(ColumnToSort).Text, listviewY.SubItems(ColumnToSort).Text)
				

Jak vytvořit ukázkový projekt

  1. Vytvoření nového jazyka Visual Basic.NET nebo jazyka Visual Basic 2005 Windows aplikace project. Ve výchozím nastavení je vytvořen formulář Form1.

    Poznámka: Je nutné změnit kód v jazyce Visual Basic 2005. Ve výchozím nastavení vytvoří aplikace Visual Basic dva soubory projektu při vytvoření projektu model Windows Forms. Pokud formulář pojmenován Formulář1, dva soubory, které představují formuláře jsou pojmenovány, Form1.vb a Form1.Designer.vb. Píšete kód v souboru Form1.vb. Návrhář model Windows Forms zapíše kód v souboru Form1.Designer.vb. Návrhář model Windows Forms používá klíčové slovo částečné provádění formulář1 rozdělit do dvou samostatných souborů. Toto chování zabrání je proloženo kódu generovaném kódu.

    Další informace o nová vylepšení jazyka Visual Basic 2005 naleznete na webu Microsoft Developer Network (MSDN):
    http://msdn2.microsoft.com/en-us/library/ms379584 (vs.80) .aspx
    Další informace o částečné třídy a Návrhář model Windows Forms naleznete na webu MSDN:
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx
  2. Přidat Zobrazení ListView řízení do formuláře Form1. Velikost formuláře je několik cm široký podle několik cm vysoké.
  3. Vložte následující kód do třídy formuláře:
    Private lvwColumnSorter As ListViewColumnSorter
    					
  4. Vložte následující kód do konstruktoru formuláře, Po volání InitializeComponent Metoda:
    ' Create an instance of a ListView column sorter and assign it 
    ' to the ListView control.
    lvwColumnSorter = New ListViewColumnSorter()
    Me.ListView1.ListViewItemSorter = lvwColumnSorter
    					
  5. Vložte následující kód do Zatížení událost formuláře:
    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. Vložte následující kód do ColumnClick události Zobrazení 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. V Projekt nabídky, klepněte na tlačítko Přidání třídy Přidání nové třídy do projektu.
  8. Nahradit všechny výchozí kód nové třídy se Následující kód:
    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. Uložit, sestavit a spustit ukázkový projekt.
  10. Klepněte na různých záhlaví sloupců v Zobrazení ListView ovládací prvek. Pokud klepnete na záhlaví, obsah Zobrazení ListView řízení jsou seřazeny ve vzestupném pořadí podle sloupce, klepnutí na tlačítko. Klepnete-li na stejné záhlaví sloupce znovu, je seřazen sloupec v sestupném pořadí.

Vlastnosti

ID článku: 319399 - Poslední aktualizace: 19. května 2011 - Revize: 5.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Klíčová slova: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB319399 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:319399

Dejte nám zpětnou vazbu