【问题标题】:Most efficient way to ensure uniqueness of treeView property as user enters new values在用户输入新值时确保 treeView 属性唯一性的最有效方法
【发布时间】:2009-06-01 20:47:05
【问题描述】:

我正在寻找一种高效的小算法来遍历 .NET treeView 节点列表的文本属性。当用户完成添加新节点并最终点击保存时,我需要检查文本属性(包含用户输入的友好名称)是否仍然是唯一的。
如果 treeView 键恰好是这个数据,生活会很容易,但它不是(它是一个 GUID,但必须让用户输入一个友好的名称)。

有什么比引入一个带有 foreach 循环的新方法来检查每个节点的文本属性中的重复名称更好的想法吗? 顺便说一句 - 我已经在当前代码路径中提供了每个单独的节点......我正在遍历列表一次以寻找其他(更简单的)条件来提供反馈。 foreach(treeView.Nodes[0].Nodes 中的 TreeNode 节点) { ... }

谢谢, 鲍勃

【问题讨论】:

    标签: .net winforms treeview


    【解决方案1】:

    如果用户从头开始构建树,那么如果您将每个名称插入 Hashtable,您可以通过检查 Hashtable 中名称的存在来快速检查重复项。您必须处理更新,但这很容易。

    【讨论】:

    • 我认为你是对的。一个列表是行不通的。唯一性实际上存在于 treeView 的不同类型的成员中(我可以在找到欺骗名称后进行快速检查),因此我可以将类型与名称一起放入哈希中。
    【解决方案2】:

    我必须这样做一次。我记得,我对 TreeView 及其节点进行了子类化,然后添加了自己的方法来捕获对文本属性的任何更改,这些更改总是会将新值添加到列表中,如果该文本值已经存在,这当然会引发错误。此外,在添加新值之前,必须先从列表中删除任何旧/上一个 node.text 值。

    这对我来说很好。

    【讨论】:

      【解决方案3】:

      我不知道您的优雅与可维护性比率是多少,但对于这么简单的事情,我会考虑像 Arnshea 提到的哈希表,或者甚至像 SortedList 这样简单的东西。

      【讨论】:

        猜你喜欢
        • 2016-01-02
        • 1970-01-01
        • 1970-01-01
        • 2016-01-10
        • 1970-01-01
        • 2016-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多