Bagaimana cara untuk menyortir ListView kontrol oleh kolom dalam Visual Basic.BERSIH atau pada Visual Basic 2005

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 319399 - Melihat produk di mana artikel ini berlaku.
Untuk Microsoft Visual C#.NET versi ini Pasal, lihat 319401.
Untuk versi Microsoft Visual Basic 6.0 ini Pasal, lihat 170884.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini selangkah demi selangkah menjelaskan cara untuk menyortir ListView kontrol oleh kolom dalam Visual Basic.Aplikasi NET atau Visual Basic 2005.

Ketika Anda bekerja dengan ListView kontrol, Anda mungkin ingin untuk menyortir isinya berdasarkan tertentu kolom. Contoh fungsi semacam ini terjadi di Windows Explorer program ketika Anda melihat isi folder di harddisk Anda. Dalam rincian Lihat, Windows Explorer menampilkan informasi tentang file dalam folder. Untuk misalnya, Anda melihat nama file, ukuran file, jenis file dan tanggal yang file diubah. Ketika Anda mengklik salah satu kolom header, daftar ini diurutkan dalam urutan yang didasarkan pada kolom. Ketika Anda mengklik kolom yang sama header lagi, kolom yang diurutkan dalam urutan.

Contoh dalam artikel ini mendefinisikan sebuah kelas yang mengimplementasikan IComparer antarmuka. Selain itu, contoh ini menggunakan Membandingkan metode CaseInsenstiveComparer kelas untuk melakukan perbandingan aktual item. Perhatikan bahwa metode ini perbandingan tidak peka ("Apple" dianggap sama seperti "apple"). Juga, perhatikan bahwa semua kolom dalam contoh ini adalah diurutkan dengan cara "teks". Jika Anda ingin untuk menyortir dengan cara yang berbeda (seperti numerik), Anda dapat mengganti baris kode berikut dengan mana pendekatan untuk menyortir yang ingin Anda gunakan:
compareResult = ObjectCompare.Compare(listviewX.SubItems(ColumnToSort).Text, listviewY.SubItems(ColumnToSort).Text)
				

Bagaimana membangun contoh proyek

  1. Buat baru Visual Basic.NET atau Visual Basic 2005 Windows aplikasi proyek. Form1 dibuat secara default.

    Catatan Anda harus mengubah kode pada Visual Basic 2005. Secara default, Visual Basic menciptakan dua file untuk proyek ketika Anda membuat proyek Windows Forms. Jika bentuk bernama Form1, dua file yang mewakili bentuk yang bernama Form1.vb dan Form1.Designer.vb. Anda menulis kode dalam Form1.vb file. Windows Forms Designer menulis kode dalam Form1.Designer.vb file. Windows Forms Designer menggunakan kata kunci parsial untuk membagi pelaksanaan Form1 menjadi dua file terpisah. Perilaku ini mencegah kode yang dihasilkan desainer yang diselingi dengan kode Anda.

    Untuk informasi lebih lanjut tentang tambahan bahasa Visual Basic 2005 baru, kunjungi Web site Microsoft Developer Network (MSDN) berikut:
    .aspx http://msdn2.Microsoft.com/en-us/library/ms379584 (vs.80)
    Untuk informasi lebih lanjut tentang kelas parsial dan desainer bentuk Windows, kunjungi Website MSDN berikut:
    http://msdn2.Microsoft.com/en-us/library/ms171843.aspx
  2. Tambahkan ListView mengontrol Form1. Ukuran formulir untuk beberapa inci lebar oleh beberapa inci tinggi.
  3. Paste kode berikut ke kelas untuk bentuk:
    Private lvwColumnSorter As ListViewColumnSorter
    					
  4. Paste kode berikut ke konstruktor bentuk, Setelah panggilan untuk InitializeComponent metode:
    ' Create an instance of a ListView column sorter and assign it 
    ' to the ListView control.
    lvwColumnSorter = New ListViewColumnSorter()
    Me.ListView1.ListViewItemSorter = lvwColumnSorter
    					
  5. Paste kode berikut ke Beban acara dalam bentuk:
    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. Paste kode berikut ke ColumnClick acara untuk 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. Pada Project menu, klik Menambahkan kelas menambahkan kelas baru untuk proyek.
  8. Mengganti semua kode standar dalam kelas baru dengan kode berikut:
    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. Simpan, membangun, dan kemudian jalankan contoh proyek.
  10. Klik header kolom berbagai di ListView kontrol. Ketika Anda klik header, isi ListView kontrol diurutkan dalam urutan yang didasarkan pada kolom yang Anda klik. Ketika Anda klik header kolom yang sama lagi, kolom disortir dalam urutan.

Properti

ID Artikel: 319399 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Kata kunci: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB319399 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:319399

Berikan Masukan

 

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