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
- 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): Další informace o částečné třídy a Návrhář model Windows Forms naleznete na webu MSDN: - Přidat Zobrazení ListView řízení do formuláře Form1. Velikost formuláře je několik cm široký podle
několik cm vysoké.
- Vložte následující kód do třídy formuláře:
Private lvwColumnSorter As ListViewColumnSorter
- 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
- 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
- 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()
- V Projekt nabídky, klepněte na tlačítko Přidání třídy Přidání nové třídy do projektu.
- 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
- Uložit, sestavit a spustit ukázkový projekt.
- 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í.
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
| kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB319399 KbMtcs |
Strojově přeložený článekDů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
(http://support.microsoft.com/kb/319399/en-us/
)