我寫了下面的類來創建使用自然排序算法的CheckedListboxes。但是,重寫的Sort()
方法並未被解僱。自然排序CheckedListbox
(該方法中的代碼是如何實現在常規列表框自己的排序算法的MSDN例子。)
Public Class NaturalSortedCheckedListbox
Inherits CheckedListBox
Private _naturalComparer As New NaturalSortComparer
Public Sub New()
MyBase.new()
End Sub
Protected Overrides Sub Sort()
'** A breakpoint on the following line will not get hit.
If Items.Count > 1 Then
Dim swapped As Boolean
Do
Dim counter As Integer = Items.Count - 1
swapped = False
While counter > 0
If _naturalComparer.Compare(Items(counter).ToString(), Items(counter - 1).ToString()) = -1 Then
Dim temp As Object = Items(counter)
Items(counter) = Items(counter - 1)
Items(counter - 1) = temp
swapped = True
End If
counter -= 1
End While
Loop While swapped
End If
End Sub
End Class
一個CheckedListbox從列表框派生,所以我想通了Sort()
將要覆寫工作,但我堅持爲什麼它沒有。
我正在設置實例的.Sorted = True
,但它只是使用默認算法對項目進行排序,而不是自然排序算法(已經過測試並顯示爲按預期在別處工作)。
您的'NaturalSortedCheckedListbox'的構造函數是否被調用? – 2012-04-18 15:22:50
偉大的問題,是的,它是。 – MCattle 2012-04-18 15:24:54