23-10-13, 02:50 AM
(آخر تعديل لهذه المشاركة : 23-10-13, 03:41 AM {2} بواسطة @@أبورائد@@.)
السلام عليكم ورحمة الله وبركاته
بامكانك وضع هذا الكود لترتيب أي عمود تختاره بالنقر على عنوانه مع تحديد نوع الفرز تصاعدي أم تنازلي بشكل اختياري
السلام عليكم ورحمة الله وبركاته
السلام عليكم ورحمة الله وبركاته
وهذه طريقة أخرى لو أردت عند كل ضغطة على عنوان العمود يبدل بين التصاعدي والتنازلي (شبيه بـ DataGridView)
السلام عليكم ورحمة الله وبركاته
بامكانك وضع هذا الكود لترتيب أي عمود تختاره بالنقر على عنوانه مع تحديد نوع الفرز تصاعدي أم تنازلي بشكل اختياري
كود :
Public Class Form1
Private Sub ListView1_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView1.ColumnClick
ListView1.ListViewItemSorter = New ListViewItemComparer(e.Column, SortOrder.Descending)
End Sub
End Class
Public Class ListViewItemComparer
Implements IComparer
Private col As Integer
Private ord As SortOrder
Public Sub New()
col = 0
End Sub
Public Sub New(ByVal column As Integer, Optional ByVal order As SortOrder = SortOrder.Ascending)
col = column
ord = order
End Sub
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
If ord = SortOrder.Ascending Then
Return String.Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
Else
Return String.Compare(CType(y, ListViewItem).SubItems(col).Text, CType(x, ListViewItem).SubItems(col).Text)
End If
End Function
End Classالسلام عليكم ورحمة الله وبركاته
السلام عليكم ورحمة الله وبركاته
وهذه طريقة أخرى لو أردت عند كل ضغطة على عنوان العمود يبدل بين التصاعدي والتنازلي (شبيه بـ DataGridView)
كود :
Public Class Form1
Private Sub ListView1_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView1.ColumnClick
If Val(ListView1.Columns(e.Column).Tag) = 0 Then
ListView1.ListViewItemSorter = New ListViewItemComparer(e.Column, SortOrder.Ascending)
ListView1.Columns(e.Column).Tag = 1
Else
ListView1.ListViewItemSorter = New ListViewItemComparer(e.Column, SortOrder.Descending)
ListView1.Columns(e.Column).Tag = 0
End If
End Sub
End Class
Public Class ListViewItemComparer
Implements IComparer
Private col As Integer
Private ord As SortOrder
Public Sub New()
col = 0
End Sub
Public Sub New(ByVal column As Integer, Optional ByVal order As SortOrder = SortOrder.Ascending)
col = column
ord = order
End Sub
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
Select Case ord
Case SortOrder.Ascending
Return String.Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
CType(x, ListViewItem).Tag = 1
Case SortOrder.Descending
Return String.Compare(CType(y, ListViewItem).SubItems(col).Text, CType(x, ListViewItem).SubItems(col).Text)
CType(x, ListViewItem).Tag = 0
Case SortOrder.None
If Val(CType(x, ListViewItem).Tag) = 0 Then
Return String.Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
CType(x, ListViewItem).Tag = 1
Else
Return String.Compare(CType(y, ListViewItem).SubItems(col).Text, CType(x, ListViewItem).SubItems(col).Text)
CType(x, ListViewItem).Tag = 0
End If
End Select
End Function
End Classالسلام عليكم ورحمة الله وبركاته
