我在我的winforms程序中排序树视图的子节点时遇到问题。我的树视图由一些XML文件填充,它使用xml文件中的内部文本作为节点的Text属性(因此,我认为在将它们添加到树视图之前不能对它们排序,或者如果可能,因为xml文件是规模很大,我不想浪费这个过程)。在我的计划已填充的树视图看起来是这样的:在c#winforms中填充树视图后排序树视图的子节点
正如您可以猜到我想的子节点进行排序像(我不想HBM \ D10来HBM \ D1之后),而我想:
HBM\D1
HBM\D2
HBM\D3
etc...
我已经尝试treeView1.Sort(),并且还加入的BeginUpdate和endUpdate,但我没有suceess :(
我使用.NET 4,任何提示将appriciated
确定我sortet它用托马斯的建议是:
class NodeSorter : IComparer
{
public int Compare(object x, object y)
{
TreeNode tx = (TreeNode)x;
TreeNode ty = (TreeNode)y;
if (tx.Text.Length < ty.Text.Length)
{
return -1;
}
if (tx.Text.Length > ty.Text.Length)
{
return 1;
}
return 0;
}
}
谢谢,你能不能给多一点关于逻辑的一部分?是关于将节点转换为二进制还是其他? – 2011-04-11 08:27:49
@ Sean87,您需要按照您自己的逻辑对TreeNode的文本进行排序,即提取文本的数字部分,然后通过数字进行比较,如果名称的其余部分相同 – 2011-04-11 09:24:23
为了使其工作。净4(Windows 8)我不得不使它从比较器继承并实现比较作为公共覆盖int比较(TreeNode Node1,TreeNode Node2)' –
ThunderGr
2013-10-17 12:30:08