- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了以下类来创建使用自然排序算法的 CheckedListbox。被覆盖的 Sort()
然而,方法并没有被解雇。
(该方法中的代码来自 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
Sort()
覆盖会起作用,但我不知道为什么它不起作用。
.Sorted = True
,但它只是使用默认算法对项目进行排序,而不是自然排序算法(已经过测试并显示在其他地方按预期工作)。
最佳答案
是的,这是一个“怪癖”,有人称其为错误,但在原生 Windows 控件上使用 bolt 连接 .NET 包装器是非常典型的损失。问题是 native Windows 列表框控件已经实现了排序。当您将 Sorted 设置为 True 时,包装器会告诉控件开始对添加的任何项目进行排序。 Sort() 方法被固定以允许自定义排序顺序,这显然很有用。
麻烦的是,该方法仅在您将 Sorted 设置为 true 时运行。每次添加新项目时,它都不会调用 Sort()。如果在添加项目时 Sorted 已经为真,那么它是排序的 native 控件。自定义订单时明显失败的鲸鱼。
您需要做的是强制 Sort() 方法再次运行。这需要像这样的愚蠢代码:
MyCheckedListBox1.Items.Add("sortdammit")
MyCheckedListBox1.Sorted = False
MyCheckedListBox1.Sorted = True
关于.net - 自然排序 CheckedListbox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10212474/
我编写了以下类来创建使用自然排序算法的 CheckedListbox。被覆盖的 Sort()然而,方法并没有被解雇。 (该方法中的代码来自 MSDN 示例,关于如何在常规列表框上实现您自己的排序算法。
我在创建 CheckedListBox 的“二级”时遇到了一些问题。 示例: 这是我的 CheckedListBox: 代码: checkedListBox_materiałyDoRozliczen
我有: ListenCheckedListBox.SetItemCheckState(0, CheckState.Unchecked); 这个赋值会触发 ListBox 的 ItemCheck 事件吗
我有一个包含两个元素的表单:一个CheckedListBox 和一个CheckBox。 CheckBox 称为SelectAllCheckBox,用于选中/取消选中CheckedListBox 中的所
我需要改变我的 CheckedListBox 中项目的颜色,但“alternatingColors”不是 CheckedListBox 的属性。 如何让项目的颜色交替? 最佳答案 默认情况下,OnDr
我有一个使用此代码获取项目的 CheckedListBox。 public static void GetDisplayValueList(object clk, string[] kv, strin
我想在一个应用程序中使用 CheckedListBox,其中 ListBox 中的每个项目都是我硬盘上一个文件夹的名称,并且为了在这些文件夹中的每个文件夹中读取和写入文本文件,我想确保在 Checke
我在一个表单上有多个 checkedListBox。对于每个 checkedListBox 我都有一个按钮来“选择所有”项目: private void btnSelectAll1_Click(obj
我需要覆盖基本的 CheckedListBox 行为。 可以在不附加任何代码的情况下选中和取消选中 CheckedListBox。 我需要禁用此行为,以便我可以实现自定义代码。 有什么想法吗? 谢谢。
在 .NET 领域,有非常有用的 System.Windows.Forms.CheckedListBox类。 Windows Common Controls 中的等价物是什么? (如果有的话) 最佳答
在我的 CheckedListBox 应用程序中,我只想允许检查一个项目。 我已经设置了这些属性 checkOnClick = true; SelectionMode = One; 任何建议将不胜感激
当用户的鼠标悬停在 CheckedListBox 中的项目上时,是否有一种直接的方法来设置在工具提示中显示额外的文本? 我期望能够在代码中做的是: uiChkLstTables.DisplayOnHo
我有一个名为 Subjects 的集合,其属性为字符串中的名称和整数中的 SubjectCode。我将它传递给一个选中的列表框。按下按钮,我想获取用户检查的所有项目的集合,将其转换为集合主题。 请任何
我在 Windows 窗体中有一个 CheckedListBox 控件。 我想知道向谁添加多列。MultiColumn 属性设置为 true。我只想知道添加 2 列的编码。 我的代码是 while (
在 .NET Framework 中,是否可以将 CheckedListBox 中的某些项目设置为“不可选中”?我不想让用户再次检查相同的项目并将它们添加到另一个现有列表中。 我希望我是清楚的。提前致
我为 Windows 窗体应用程序创建了一个用户控件。它只有一个带有四个单元格的 TableLayoutPanel。 Cell[0,0] 和 cell[0,1] 有标签。 Cell[1,0] 有一个
我想根据传递给表单构造函数的项目填充 CheckedListBox(在本例中,列表 )。 我的框架代码是: foreach (int platypus in listPlatypi) { us
我有一个像这样的CheckedListBox: :'''''''''''''''/\ : [ ] item1 || : [x] item2 || : [ ] item3 ##
是否可以像在复选框中一样将 .Checked== 应用于 checkedlistbox? 如果以复选框的方式来做它是行不通的 if(checkedListBox1.Items[2].Checked==
我有一个绑定(bind)到 DataTable 的 CheckedListBox。现在我需要以编程方式检查一些项目,但我发现 SetItemChecked(...) 方法只接受项目索引。 有没有一种实
我是一名优秀的程序员,十分优秀!