【发布时间】:2018-04-07 19:28:36
【问题描述】:
这是我的代码:
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 并创建节点。
【问题讨论】:
-
ContainsKey搜索带有给定Name的TreeNode,而不是Text。 -
旁注:您也可以使用
treeView1.Nodes.Find搜索子节点。 -
感谢您的帮助。请将其发布为 answear
-
你应该使用
Path.GetExtension而不是 ".Contains()`,因为 "MyFile.exe.config" 是完全合法的并且很常见。