base utilizzando l' esempio precedente , vedremo come, Visual Basic. NET , ordinare i dati in lista per una delle sue colonne.
Il progetto , prima di aggiungere due pulsanti per selezionare quale è l'ordine desiderato. Come mostrato nella figura seguente:

Più tardi, il codice del modulo stesso creeremo due nuove classi (OrdenarPorNombre e ordine, per dimensioni), e gli eventi dei pulsanti che leccano impostare la proprietà listview ListViewItemSorter con una nuova istanza della classe corrispondente all'ordine selezionato. Il codice è breve, quindi non costano molte analisi. Poi lascio tutto il codice del modulo:
Imports System.IO Public Class Form1 Private Sub Form1_Load (ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Dim d Come New DirectoryInfo ("C: \ Windows") ListView1.View = View.Details ListView1.FullRowSelect = True ListView1.BeginUpdate () ListView1.Items.Clear () For Each f Come FileInfo In d.GetFiles Dim elemento As New ListViewItem (f.Name) item.SubItems.Add (f.length) item.SubItems.Add (f.CreationTime) item.SubItems.Add (f.LastWriteTime) item.SubItems.Add (f.LastAccessTime) ListView1.Items.Add (item) Prossimo ListView1.EndUpdate () End Sub Privato Sub Button1_Click (ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click 'Ordina per nome ListView1.ListViewItemSorter = New ordenarPorNombre End Sub Private Sub Button2_Click (ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click 'Ordina per dimensione ListView1.ListViewItemSorter = New ordenarPorTamaño End Sub End Class Classe ordenarPorNombre Implementa IComparer
Public Function Compare (ByVal x As Object, ByVal y As Object) _ As Integer Implements System.Collections.IComparer.Compare Item1 As ListViewItem = CType (x, ListViewItem) Dim item2 As ListViewItem = CType (y, ListViewItem) Ritorno String.Compare (item1.Text, item2.Text) End Function End Class
Classe ordenarPorTamaño Implementa IComparer Public Function Compare (ByVal x As Object, ByVal y As Object) _ As Integer Implements System.Collections.IComparer.Compare Item1 As ListViewItem = CType (x, ListViewItem) Dim item2 As ListViewItem = CType (y, ListViewItem) Math.Sign Return (CLng (item1.SubItems (1) Testo) -.. CLng (item2.SubItems (1) Testo)) End Function End Class
Come sempre, spero che il codice sarà utile.
Informazioni Bitacoras.com ...
Rate in Bitacoras.com: utilizzando come base l'esempio precedente, vedremo come, Visual Basic Net ordinano i dati in lista per una qualsiasi delle sue colonne.. Il progetto precedente aggiungere due pulsanti per selezionare quale è l'ordine di .....
Ok, bene, ma ... questo solo ordine crescente e per l'acquisto su e giù, dando il clic sulla colonna?
Ciao Laura:
Per ordinare per nome in ordine decrescente basta invertire le variabili che vengono restituiti in classe OrdenarPorNombre ... Devi cambiare:
Ritorno String.Compare (item1.Text, item2.Text)
per questo:
Ritorno String.Compare (item2.Text, item1.Text)
e nel caso di ordine numerico deve invertire il segno restituito dal caso ordenarPorTamaño, cambiando questo:
Math.Sign Return (CLng (item1.SubItems (1) Testo) -.. CLng (item2.SubItems (1) Testo))
per questo:
Ritorno Math.Sign () CLng (item1.SubItems (1) Testo.) - CLng (item2.SubItems. (1) Testo)) * -1)
e, infine, vi dico che l'ordine dando Fai clic sulla colonna di ListView commentare qui perché voglio dedicare un articolo separato.
Saluti, Eliseo
E come si ordina da tutto il campo in ordine decrescente Data data di creazione ad es.
Aggiungere la seguente classe e assegnare al pulsante che si desidera.
Classe ordenarPorFechaCreacion
Implementa IComparer
Public Function Compare (ByVal x As Object, ByVal y As Object) _
As Integer Implements System.Collections.IComparer.Compare
Item1 As ListViewItem = CType (x, ListViewItem)
Dim item2 As ListViewItem = CType (y, ListViewItem)
Ritorno Date.Compare (Date.parse (item1.SubItems (2). Text), Date.parse (item2.SubItems (2). Testo))
End Function
End Class
Ciao a tutti.
in C # come sarebbe la condanna per lo stesso ordine?
[...] [...]
dobry inizio
nel caso in cui se ho un elenco in modo
23 = 5 +5 +13
5 = 1 +1 +1 +2
4 = 3 +1
etc .....
Posso fare a mio modo di ordinare i numeri che se un risultato è che io non 231 = 100 +100 31 metterlo dopo il 23 5 +5 = 13
Buon pomeriggio,
Ci scusiamo per l'inconveniente, ma sapere come è possibile ordinare da due colonne in una sola volta? qualcosa di simile:
XYZ
ABA -> 1
baa -> 2
per b -> 3
e la sinistra:
XYZ
per b -> 3
ABA -> 1
baa -> 2
Super grata se potesse aiutarmi e se no, grazie per la pubblicazione delle stesse informazioni che è stato utile anche a me.
E se volete fino ad oggi ..... che non sono solo per data di creazione