Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

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

Ö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
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.
Ö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)				
back to the top

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: 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:
  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 = -2Next					
  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 IfElse    ' Set the column number that is to be sorted; default to ascending.    lvwColumnSorter.SortColumn = e.Column    lvwColumnSorter.Order = SortOrder.AscendingEnd 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.CollectionsImports System.Windows.FormsPublic 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 PropertyEnd 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.
back to the top

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 319399 - Son İnceleme: 05/11/2007 07:08:50 - Düzeltme: 3.5

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB319399 KbMttr
Geri bildirim