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
- 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: Untuk informasi lebih lanjut tentang kelas parsial dan desainer bentuk Windows, kunjungi Website MSDN berikut: - Tambahkan ListView mengontrol Form1. Ukuran formulir untuk beberapa inci lebar oleh
beberapa inci tinggi.
- Paste kode berikut ke kelas untuk bentuk:
Private lvwColumnSorter As ListViewColumnSorter
- 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
- 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
- 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()
- Pada Project menu, klik Menambahkan kelas menambahkan kelas baru untuk proyek.
- 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
- Simpan, membangun, dan kemudian jalankan contoh proyek.
- 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.
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
| kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB319399 KbMtid |
Penerjemahan MesinPENTING: 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
(http://support.microsoft.com/kb/319399/en-us/
)