000
18.04.2005, 11:35 Uhr
mirmi
|
Hallo
Habe mir den unten angeführten Comparer in mein Prog eingefügt. (Hab ich in einem Forum gefunden...) Ich kann meine liste mit dem Comparer nur 1x sortieren.
Leider funzt es nicht, wenn ich die Liste aus meinen Arrays neu schreibe. Sobald die erste Zeile erstellt wurde, also item(0), springt der Comparer an und bekommt natürlich eine Fehlermeldung, weil die Vergleichsliste iy keine Einträge enthält. Klar, sie ist ja auch noch nicht wiederbefüllt.
Ich würde den comparer gerne manuell anstarten. momentan wird er so aktiviert: varfrmMachines.lstViewMachines.ListViewItemSorter = New ColumnComparer(1, varfrmMachines.lstViewMachines.Sorting)
Leider ist er ab diesem Zeitpunkt immer aktiv. Gibt es eine Möglichkeit, die Sortierung manuell zu starten? Ich muss in meinem Prog den ListView mehrmals löschen und neu befüllen. Erst nach dem Befüllen, soll nach der 2. Spalte sortiert werden.
Bitte um einen Tip grüße mirmi
Comparer-Code: Public Class ColumnComparer Implements IComparer Private _ColumnIndex As System.Int32 Private _Sorting As System.Windows.Forms.SortOrder
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements
System.Collections.IComparer.Compare Dim ix As System.Windows.Forms.ListViewItem Dim iy As System.Windows.Forms.ListViewItem
ix = DirectCast(x, System.Windows.Forms.ListViewItem) iy = DirectCast(y, System.Windows.Forms.ListViewItem)
If ix.SubItems.Count > _ColumnIndex And iy.SubItems.Count = 0 Then Return 1 ElseIf ix.SubItems.Count > _ColumnIndex And iy.SubItems.Count = 0 Then Return -1 Else Return System.String.Compare(ix.SubItems(_ColumnIndex).Text, iy.SubItems(_ColumnIndex).Text) End If End Function
Public Sub New(ByVal ColumnIndex As System.Int32, ByVal Sorting As System.Windows.Forms.SortOrder) _ColumnIndex = ColumnIndex _Sorting = Sorting End Sub End Class |