Τρόπος ταξινόμησης ενός στοιχείου ελέγχου ListView από μια στήλη σε Visual Basic .NET ή Visual Basic 2005

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 319399 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Για την έκδοση Microsoft Visual C# .NET αυτού του άρθρου, ανατρέξτε στην ενότητα319401.
Για την έκδοση αυτού του άρθρου Microsoft Visual Basic 6.0, ανατρέξτε στην ενότητα170884.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Αυτό το άρθρο βήμα προς βήμα περιγράφει τον τρόπο για να ταξινομήσετε έναΠροβολή λίσταςελέγξετε μια στήλη στην εφαρμογή της Visual Basic .NET ή Visual Basic 2005.

Όταν εργάζεστε με τοΠροβολή λίσταςστοιχείο ελέγχου, μπορεί να θέλετε να ταξινομήσετε τα περιεχόμενά του, βάσει μιας συγκεκριμένης στήλης. Παρουσιάζεται ένα παράδειγμα αυτού του είδους της λειτουργικότητας σε έναν Windows Explorer πρόγραμμα όταν προβάλλετε τα περιεχόμενα ενός φακέλου στον σκληρό σας δίσκο. Στην προβολή λεπτομέρειες, την Εξερεύνηση των Windows εμφανίζει πληροφορίες σχετικά με τα αρχεία σε αυτόν το φάκελο. Για παράδειγμα, μπορείτε να δείτε το όνομα του αρχείου, το μέγεθος του αρχείου, τον τύπο αρχείου και την ημερομηνία τροποποίησης του αρχείου. Όταν κάνετε κλικ σε μία από τις κεφαλίδες των στηλών, η λίστα ταξινομείται με αύξουσα σειρά με βάση αυτήν τη στήλη. Όταν κάνετε κλικ ξανά την ίδια επικεφαλίδα στήλης, ταξινομούνται με φθίνουσα σειρά της στήλης.

Το παράδειγμα αυτού του άρθρου ορίζει μια κλάση που υλοποιεί τοIComparerΔιασύνδεση. Επιπλέον, το παράδειγμα αυτό χρησιμοποιεί τοΣύγκρισηη μέθοδος τουCaseInsenstiveComparerη κλάση για την πραγματική σύγκριση των στοιχείων. Σημειώστε ότι αυτή η μέθοδος σύγκρισης δεν κάνουν διάκριση πεζών-κεφαλαίων ("Apple" θεωρείται το ίδιο με το "μηλιές"). Επίσης, σημειώστε ότι όλες οι στήλες σε αυτό το παράδειγμα ταξινομούνται με τρόπο "κείμενο". Εάν θέλετε να κάνετε ταξινόμηση με διαφορετικό τρόπο (όπως αριθμητικά), μπορείτε να αντικαταστήσετε την παρακάτω γραμμή κώδικα με όποια προσέγγιση για την ταξινόμηση που θέλετε να χρησιμοποιήσετε:
compareResult = ObjectCompare.Compare(listviewX.SubItems(ColumnToSort).Text, listviewY.SubItems(ColumnToSort).Text)
				

Πώς να δημιουργήσει το δείγμα έργου

  1. Για να δημιουργήσετε ένα νέο έργο της Visual Basic .NET ή εφαρμογής Windows 2005 της Visual Basic. Φόρμα1 δημιουργείται από προεπιλογή.

    ΣΗΜΕΙΩΣΗΠρέπει να αλλάξετε τον κώδικα της Visual Basic του 2005. Από προεπιλογή, η Visual Basic δημιουργεί δύο αρχεία για το έργο όταν δημιουργείτε ένα έργο Windows Forms. Εάν η φόρμα ονομάζεται Φόρμα1, τα δύο αρχεία που αντιπροσωπεύει τη φόρμα ονομάζονται Form1.vb και Form1.Designer.vb. Συντάξτε τον κώδικα στο αρχείο Form1.vb. Η σχεδίαση φορμών Windows εγγράφει τον κώδικα στο αρχείο Form1.Designer.vb. Η σχεδίαση φορμών Windows χρησιμοποιεί τη μερική λέξη-κλειδί για να διαιρέσετε την εφαρμογή της Φόρμα1 σε δύο ξεχωριστά αρχεία. Αυτή η συμπεριφορά αποτρέπει είναι διάσπαρτα με τον κώδικά σας τον κώδικα που δημιουργήθηκε από σχεδιαστή.

    Για περισσότερες πληροφορίες σχετικά με τις νέες βελτιώσεις γλώσσα της Visual Basic 2005, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft Developer Network (MSDN) στο Web:
    .aspx http://msdn2.Microsoft.com/en-us/library/ms379584 (vs.80)
    Για περισσότερες πληροφορίες σχετικά με την μερική κλάσεις και η σχεδίαση φορμών Windows, επισκεφθείτε την ακόλουθη τοποθεσία MSDN στο Web:
    http://msdn2.Microsoft.com/en-us/library/ms171843.aspx
  2. Προσθήκη ενόςΠροβολή λίσταςΈλεγχος για Φόρμα1. Το μέγεθος της φόρμας να είναι αρκετά ίντσες πλάτος ύψος αρκετές ίντσες.
  3. Επικολλήστε τον ακόλουθο κώδικα στο της κλάσης της φόρμας:
    Private lvwColumnSorter As ListViewColumnSorter
    					
  4. Paste the following code into the constructor of the form, after the call to theInitializeComponentΗ μέθοδος:
    ' Create an instance of a ListView column sorter and assign it 
    ' to the ListView control.
    lvwColumnSorter = New ListViewColumnSorter()
    Me.ListView1.ListViewItemSorter = lvwColumnSorter
    					
  5. Επικολλήστε τον ακόλουθο κώδικα στο στοΦόρτωσηevent of the form:
    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. Επικολλήστε τον ακόλουθο κώδικα στο στοColumnClickσυμβάν για τοΠροβολή λίστας:
    ' 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. Στο διακομιστήΤο έργομενού, κάντε κλικ στο κουμπίΠροσθήκη κατηγορίαςΓια να προσθέσετε μια νέα κλάση στο έργο.
  8. Replace all of the default code in the new class with the following code:
    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. Αποθήκευση, δημιουργία και στη συνέχεια εκτελέστε το δείγμα έργου.
  10. Κάντε κλικ σε διάφορα κεφαλίδες στήλης στο στοΠροβολή λίσταςControl. When you click the header, the contents of theΠροβολή λίσταςcontrol are sorted in ascending order based on the column that you click. When you click the same column header again, that column is sorted in descending order.

Ιδιότητες

Αναγν. άρθρου: 319399 - Τελευταία αναθεώρηση: Τρίτη, 21 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Λέξεις-κλειδιά: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB319399 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:319399

Αποστολή σχολίων

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com