c# - Treenode 存在但 treenode.nodes.ContainsKey ("Nodename") 等于 false

标签 c# winforms treeview

这是我的代码:

if (e.Node.Parent == null)
{
    string selectedNodeText = e.Node.Text;
    TreeNode x = e.Node;
    string response = server.Send_Command(Convert.ToInt32(this.Text), @"browse," + selectedNodeText);
    string[] files = response.Split(',');
    foreach (string file in files)
    {
        if (file.Contains(".exe"))
        {
            TreeNode n = new TreeNode();
            n.ImageIndex = 1;
            n.Text = file;
            x.Nodes.Add(n);


        }
        else if (file.Contains(".txt") || file.Contains(".doc") || file.Contains(".rtf"))
        {
            TreeNode n = new TreeNode();
            n.ImageIndex = 4;
            n.Text = file;
            x.Nodes.Add(n);
        }
        else if (!file.Contains("."))
        {
            TreeNode n = new TreeNode();
            n.ImageIndex = 3;
            n.Text = file;
            x.Nodes.Add(n);
        }
        else if (file.Contains(".rar") || file.Contains(".zip"))
        {
            TreeNode n = new TreeNode();
            n.ImageIndex = 5;
            n.Text = file;
           x.Nodes.Add(n);
        }
        else if (file.Contains(".sys"))
        {
            TreeNode n = new TreeNode();
            n.ImageIndex = 6;
            n.Text = file;
            x.Nodes.Add(n);
        }
        else
        {
            TreeNode n = new TreeNode();
            n.ImageIndex = 2;
            n.Text = file;
           x.Nodes.Add(n);
        }
    }

响应是包含文件名和目录的逗号分隔字符串。

现在,如果我将部分代码更改为:

if (file.Contains(".exe"))
{
    TreeNode n = new TreeNode();
    n.ImageIndex = 1;
    n.Text = file;
    if(treeView1.Nodes.ContainsKey(file))
    {

    }
    else
    {
        x.Nodes.Add(n);
    }
}

即使我看到该节点存在,它仍然给我 false 并创建新节点。我检查变量文件,它与现有节点名称相同,但它仍然返回 false 并创建节点。

最佳答案

TreeNodeCollection.ContainsKey 中所述方法文档:

Determines whether the collection contains a tree node with the specified key.

Remarks

The Name property corresponds to the key for a TreeNode in the TreeNodeCollection.

换句话说,ContainsKey 搜索具有给定 NameTreeNode,而不是您认为的 Text

同样适用于IndexOfKeyFind方法。

关于c# - Treenode 存在但 treenode.nodes.ContainsKey ("Nodename") 等于 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49711178/

相关文章:

java - 在 Java 中执行 C# 脚本

c# - 正则表达式:为什么每个找到的项目都没有组?

c# - 双缓冲用户控件的刷新问题

c# - TreeView子节点填充问题

javascript - 将任何 XML 或 JS 对象显示为树

c# - 为什么我要在我的 Controller 属性中硬编码用户权限?

c# - 为什么我会收到 authentication_redirect_to_virtual_host 错误?

c# - 跨平台应用程序中的 BinaryFormatter

c# - 如何在两种不同形式(同一程序)之间引发事件

c++ - WinAPI : Change Color of a TreeView using CustomDraw