Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何对CheckedListBox进行排序_C#_.net_Winforms_Sorting_Checkedlistbox - Fatal编程技术网

C# 如何对CheckedListBox进行排序

C# 如何对CheckedListBox进行排序,c#,.net,winforms,sorting,checkedlistbox,C#,.net,Winforms,Sorting,Checkedlistbox,我有一个选中列表框,看起来像这样: 果实 …香蕉 ……苹果 国家 汽车 ……马鲁蒂 ……丰田 飞机 学生 动物 虽然斜体的不是实际的子节点,而是父节点的子节点。香蕉和苹果是水果的产物,所以它们一起吃 直接排序不起作用,因为这样将无法将子节点与其父节点保持在一起进行排序。 我必须以这样的方式对其进行排序:子节点保留在各自的父节点中,父节点被排序,每个父节点中的子节点也被排序 例如,o/p应为 动物 汽车 ……马鲁蒂 ……丰田 国家 果实 ……苹果 …香蕉 飞机 学生 如评论中所述,您可能可以

我有一个选中列表框,看起来像这样:

  • 果实
  • …香蕉
  • ……苹果
  • 国家
  • 汽车
  • ……马鲁蒂
  • ……丰田
  • 飞机
  • 学生
  • 动物
虽然斜体的不是实际的子节点,而是父节点的子节点。香蕉和苹果是水果的产物,所以它们一起吃

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

例如,o/p应为

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

如评论中所述,您可能可以使用树视图更好地显示这种关系。 然后,排序将更加隐含在您所做的事情中,并且这种关系将更加明显

不过。 如果您确实希望对CheckedListBox使用自定义排序,则可能必须创建从CheckedListBox派生的自己的控件,并且

您可以创建一个列表,其中每个父字符串保持不变,每个子字符串都以父字符串作为前缀

  • 果实
  • 香蕉水果
  • 水果苹果
  • 国家
  • 汽车
  • 马鲁蒂汽车
  • 丰田汽车
  • 飞机
排序后(按字母顺序),父对象将被排序为正好在子对象前面。然后重新生成CheckedListBox。从已排序列表中删除项目


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

CheckedListBox以列表的形式提供复选框选项,treeview与我需要的完全不同。我不知道您的评论是什么意思
TreeView
如果您对此感兴趣,也可以。项目(大规模项目)已经完成,并且CheckedListBox上存在许多依赖项。所以我只能对这个进行排序。有可能吗???@SriramSakthivel我想他正在做一个预建项目,作为一项维护工作,他必须应用排序。很好的建议!!谢谢!!我会试试看!!
// This class inherits from CheckedListBoxand implements a different  
// sorting method. 
public class SortSpecialCheckedListBox:
    CheckedListBox

{
    public SortSpecialCheckedListBox() : base()
    {        
    }

    // Overrides the parent class Sort to perform the specialised sorting
    // behaviour you are interested in
    protected override void Sort()
    {
        // Do your specialised sort here.
    }
}