Bir liste görünümü denetimi, Visual Basic 2005 veya Visual Basic. NET'te bir sütuna göre sıralama

Makale çevirileri Makale çevirileri
Makale numarası: 319399 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makalenin Microsoft Visual C# .NET sürümü için bkz: 319401.
Bu makalenin Microsoft Visual Basic 6.0 sürümü için bkz: 170884.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu adım adım makalede, bir liste görünümü denetimi, Visual Basic .NET veya Visual Basic 2005 uygulama bir sütuna göre sıralamak açıklamaktadır.

ListView denetimiyle çalışırken, belirli bir sütunu temel alan içeriğini sıralamak isteyebilirsiniz. Windows Gezgini'nde bu tür bir işlev örneği oluşur, sabit diskinizde bir klasörün içeriğini görüntülediğinizde program. ' De ayrıntıları görüntülemek için Windows Gezgini, klasörün içindeki dosyaları hakkındaki bilgileri görüntüler. Örneğin, dosya adı, dosya boyutu, dosya türünü ve dosyanın değiştirilme tarihi bakın. Sütun başlıkları birini tıklattığınızda, listede bu sütunu göre artan düzende sıralanır. Aynı sütun başlığını yeniden tıklatın, sütun, azalan düzende sıralanır.

Bu makaledeki örnek IComparer arabirim uygulayan sınıf tanımlar. Ayrıca, bu örnek, maddelerin fiili karşılaştırmasını yapmak için <a0>CaseInsenstiveComparer</a0> sınıfının <a2>Karşılaştırılacak</a2> yöntemini kullanır. Bu yöntem, karşılaştırma, büyük/küçük harf duyarlı olduğunu unutmayın ("Apple" "elma" aynı kabul edilir). Ayrıca, bu örnekte sütunların tümünü bir "metin" şekilde sıralanacağını unutmayın. Farklı bir şekilde sıralamak istiyorsanız (gibi sayısal), aşağıdaki kod satırını, sıralamayı hangi yaklaşımı kullanmak istediğiniz ile değiştirebilir:
compareResult = ObjectCompare.Compare(listviewX.SubItems(ColumnToSort).Text, listviewY.SubItems(ColumnToSort).Text)
				

Nasıl yapılır: örnek Projeyi derleyin

  1. Yeni bir Visual Basic .NET veya Visual Basic 2005 Windows uygulaması projesi oluşturun. Varsayılan olarak, Form1 oluşturulur.

    Not Visual Basic 2005 kodunu değiştirmeniz gerekir. Windows Forms bir proje oluşturduğunuzda, varsayılan olarak, Visual Basic projesinin iki dosya oluşturur. Formun adı Form1 verilirse, formun temsil eden iki dosya Form1.vb ve Form1.Designer.vb olarak adlandırılır. Kodu, Form1.vb dosyasında yazın. Windows Forms Designer kod Form1.Designer.vb dosyaya yazar. Windows Forms Designer kısmi anahtar Form1 uygulamasının iki ayrı dosyaya bölmek için kullanır. Bu davranış, kodunuzu interspersed designer tarafından üretilen kod engeller.

    Yeni Visual Basic 2005 dil geliştirmeleri hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
    http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
    Kısmi sınıfları ve Windows Forms Tasarımcısı hakkında daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx
  2. Bir liste görünümü denetimi Form1'e ekleyin. Formun birkaç inç olarak birkaç inç boyunda olarak boyutu.
  3. Sınıf form için aşağıdaki kodu yapıştırın:
    Private lvwColumnSorter As ListViewColumnSorter
    					
  4. Aşağıdaki kodu, ınitializecomponent yöntemini çağrısının kurucu formun yapıştırın:
    ' Create an instance of a ListView column sorter and assign it 
    ' to the ListView control.
    lvwColumnSorter = New ListViewColumnSorter()
    Me.ListView1.ListViewItemSorter = lvwColumnSorter
    					
  5. Aşağıdaki kodu formun Load olayı yapıştırın:
    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. Aşağıdaki kodu için ListViewColumnClick olay yapıştırın:
    ' 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. Proje menüsünde Proje için yeni sınıf eklemek için Add Class ' ı tıklatın.
  8. Tüm yeni bir sınıf içinde <a2>Varsayılan</a2> kodu aşağıdaki kodla değiştirin:
    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. Kaydet, oluşturmak ve örnek projeyi çalıştırın.
  10. ListView denetiminde çeşitli sütun başlıkları Ek Yardım düğmesini tıklatın. Üstbilgiyi tıklattığınızda ListView denetimin içeriğini tıklattığınız sütuna göre artan düzende sıralanır. Aynı sütun başlığını yeniden tıklatın, sütun, azalan düzende sıralanır.

Özellikler

Makale numarası: 319399 - Last Review: 11 Mayıs 2007 Cuma - Gözden geçirme: 3.5
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Anahtar Kelimeler: 
kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB319399 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:319399

Geri Bildirim Ver

 

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