c# - 如何对 CheckedListBox 进行排序

标签 c# .net winforms sorting checkedlistbox

我有一个看起来像这样的CheckedListBox:

  • 水果
  • .....香蕉
  • .....苹果
  • 国家
  • 汽车
  • .....马鲁蒂
  • .....丰田
  • 飞机
  • 学生
  • 动物

虽然斜体的节点实际上不是子节点,但被视为父节点的子节点。例如。 香蕉苹果是水果的子元素,所以它们在一起等等。

直接排序不起作用,因为这不会将子节点与其父节点保持在一起。 我必须以这样的方式对其进行排序,即子节点与各自的父节点保持一致,父节点被排序,每个父节点中的子节点也被排序。

对于例如。 o/p 应该是

  • 动物
  • 汽车
  • .....马鲁蒂
  • .....丰田
  • 国家
  • 水果
  • .....苹果
  • .....香蕉
  • 飞机
  • 学生

最佳答案

您可以创建一个 List,其中每个父字符串均保持不变,并且每个子字符串都以父字符串作为前缀。

  • 水果
  • 水果香蕉
  • 水果苹果
  • 国家
  • 汽车
  • 汽车马鲁蒂
  • 汽车丰田
  • 飞机

对它进行排序(按字母顺序)后,父级将被排序为位于子级的前面。然后从排序后的 List 重建 CheckedListBox.Items。

如果存在潜在的歧义,您可能需要使用不同的分隔符,否则不会使用某些字符。

关于c# - 如何对 CheckedListBox 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25013670/

相关文章:

c# - ComboBox 在键入时更改文本颜色的事件

c# - 如何为一对 3D 向量实现 GetHashCode

c# - 操作 链接到 "lose"参数

c# - 即使应用程序关闭,如何在 Windows Phone 的 IsolatedStorageSettings 中保留数据?

.net - ILDasm、mscorlib 和 System.Runtime 反编译差异取决于目录

c# - 将链接标签添加到绑定(bind)到 DataSet 的 DataGridView 单元格或列

c# - 在 .NET 应用程序中播放视频

c# - LINQ Group By 多列并进行计数

java - 我的类中变量和函数的可访问性

c# - 这两种事务处理方式有什么区别