วิธีการเรียงลำดับตัวควบคุม ListView ตามคอลัมน์ ใน Visual Basic .NET หรือ Visual Basic 2005

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 319399 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
สำหรับรุ่น Microsoft Visual c# .NET ของบทความนี้ ดู319401.
สำหรับรุ่น Microsoft Visual Basic 6.0 ของบทความนี้ ดู170884.
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความที่มีการทีละขั้นตอนนี้อธิบายวิธีการเรียงลำดับแบบListViewควบคุม โดยคอลัมน์ในโปรแกรมประยุกต์ Visual Basic .NET หรือ Visual Basic 2005

เมื่อคุณกำลังทำงานกับListViewตัวควบคุม คุณอาจต้องการเรียงลำดับเนื้อหาที่ขึ้นอยู่กับคอลัมน์ที่ระบุ ตัวอย่างของชนิดของการทำงานนี้เกิดขึ้นใน Windows Explorer โปรแกรมเมื่อคุณดูเนื้อหาของโฟลเดอร์บนฮาร์ดดิสก์ของคุณ ในการดูรายละเอียด Windows Explorer แสดงข้อมูลเกี่ยวกับแฟ้มในโฟลเดอร์นั้น ตัวอย่างเช่น คุณเห็นชื่อแฟ้ม ขนาดแฟ้ม ชนิดของแฟ้ม และวันที่มีการปรับเปลี่ยนแฟ้ม เมื่อคุณคลิกที่ส่วนหัวของคอลัมน์อย่างใดอย่างหนึ่ง รายการที่จะเรียงลำดับในมากใบสั่งขึ้นอยู่กับคอลัมน์นั้น เมื่อคุณคลิกที่ส่วนหัวของคอลัมน์เดียวกันได้อีกครั้งนี้ คอลัมน์ที่จะเรียงลำดับในจากใบสั่ง

ตัวอย่างในบทความนี้กำหนดคลาสที่ใช้นั้นIComparerอินเทอร์เฟซ นอกจากนี้ ตัวอย่างนี้ใช้นั้นเปรียบเทียบวิธีการนี้CaseInsenstiveComparerคลาเพื่อทำการเปรียบเทียบจริงของสินค้า โปรดสังเกตว่า วิธีการเปรียบเทียบนี้ไม่มีความเสี่ยง case ("ของ Apple" จะถือเป็นเหมือนกับ "apple") นอกจากนี้ โปรดสังเกตว่า คอลัมน์ในตัวอย่างนี้ทั้งหมดจะถูกเรียงลำดับในลักษณะ "ข้อความ" ถ้าคุณต้องการเรียงลำดับในลักษณะที่แตกต่างกัน (เช่น numerically), คุณสามารถแทนบรรทัดต่อไปนี้ของรหัส ด้วยท้ายให้วิธีการเรียงลำดับที่คุณต้องการใช้:
compareResult = ObjectCompare.Compare(listviewX.SubItems(ColumnToSort).Text, listviewY.SubItems(ColumnToSort).Text)
				

วิธีการสร้างโครงการตัวอย่าง

  1. สร้างโครงการ Visual Basic .NET หรือ Visual Basic ในการ 2005 แอพลิเคชัน Windows ใหม่ Form1 จะถูกสร้างขึ้นตามค่าเริ่มต้น

    หมายเหตุ:คุณต้องเปลี่ยนรหัสใน Visual Basic 2005 โดยค่าเริ่มต้น Visual Basic สร้างแฟ้มที่สองสำหรับโครงการเมื่อคุณสร้างโครงการแบบฟอร์ม Windows ถ้าแบบฟอร์มมีชื่อ Form1 แฟ้มที่สองที่แสดงแบบฟอร์มมีชื่อ Form1.vb และ Form1.Designer.vb คุณสามารถเขียนรหัสในแฟ้ม Form1.vb ตัวออกแบบฟอร์ม Windows เขียนรหัสในแฟ้ม Form1.Designer.vb ตัวออกแบบฟอร์ม Windows ใช้คำสำคัญบางส่วนเพื่อแบ่งการใช้งานของ Form1 เป็นแฟ้มแยกต่างหากที่สอง ลักษณะการทำงานนี้ป้องกันไม่ให้รหัสสร้างโดยโปรแกรมออกจากการถูก interspersed ด้วยรหัสของคุณ

    สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการปรับปรุงใหม่ ๆ ของภาษา Visual Basic 2005 แวะไปที่เว็บไซต์ของ Microsoft สำหรับนักพัฒนาเครือข่าย (MSDN) ต่อไปนี้:
    .aspx http://msdn2.microsoft.com/en-us/library/ms379584 (vs.80)
    สำหรับข้อมูลเพิ่มเติมเกี่ยวกับระดับชั้นบางส่วนและผู้ออกแบบฟอร์ม Windows ไปที่ MSDN เว็บไซต์ต่อไปนี้:
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx
  2. เพิ่มคำListViewควบคุมการ Form1 ขนาดฟอร์มเป็น หลายนิ้วกว้าง โดยหลายนิ้วสูง
  3. วางรหัสต่อไปนี้ลงในคลาสำหรับฟอร์ม:
    Private lvwColumnSorter As ListViewColumnSorter
    					
  4. วางรหัสต่อไปนี้ลงในตัวสร้างแบบฟอร์ม หลังจากการเรียกไปInitializeComponentวิธีการ:
    ' Create an instance of a ListView column sorter and assign it 
    ' to the ListView control.
    lvwColumnSorter = New ListViewColumnSorter()
    Me.ListView1.ListViewItemSorter = lvwColumnSorter
    					
  5. วางรหัสต่อไปนี้ลงในการโหลดเหตุการณ์ของฟอร์ม:
    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เหตุการณ์สำหรับการ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. ในการProjectเมนู คลิกเพิ่มระดับชั้นเมื่อต้องการเพิ่มคลาสที่ใหม่กับโครงการ
  8. แทนรหัสเริ่มต้นในคลาใหม่ทั้งหมด ด้วยรหัสต่อไปนี้:
    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. คลิกที่ส่วนหัวคอลัมน์ต่าง ๆ ในการListViewตัวควบคุม เมื่อคุณคลิกหัวข้อ เนื้อหาของListViewตัวควบคุมจะถูกเรียงลำดับในใบสั่งขึ้นอยู่กับคอลัมน์ที่คุณคลิกการมาก เมื่อคุณคลิกที่ส่วนหัวของคอลัมน์เดียวกันได้อีกครั้งนี้ คอลัมน์นั้นจะเรียงลำดับในจากใบสั่ง

คุณสมบัติ

หมายเลขบทความ (Article ID): 319399 - รีวิวครั้งสุดท้าย: 13 มกราคม 2554 - Revision: 5.0
ใช้กับ
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Keywords: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB319399 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ 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