我写了下面的类来创建使用自然排序算法的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