如何在 treeview winforms 中制作 for 循环

how to make for loop in treeview winforms

所以我在设置 for 循环时遇到了问题。我有按钮单击事件,我正在读取节点文本并使用 appendline 将一些文本写入另一个文件。这是我的代码:

private void  button3_Click(object sender, EventArgs e)
{
   var header = File.ReadAllText(@"C:\dir\header.tex");
   var footer = File.ReadAllText(@"C:\dir\footer.tex");
   var sb = new StringBuilder();
   sb.AppendLine(header);

   if (treeView1.Nodes[0].Text == ("chaper1")) sb.AppendLine(@"\include {chap1}");
   if (treeView1.Nodes[1].Text == ("chapter2")) sb.AppendLine(@"\include {chap2}");
   if (treeView1.Nodes[2].Text == ("chapter3")) sb.AppendLine(@"\include {chap3}");
   if (treeView1.Nodes[3].Text == ("chapter4")) sb.AppendLine(@"\include {chap4}");

   sb.AppendLine(footer);
   File.WriteAllText(@"C: \dir\final.tex", sb.ToString());
}

我的程序正在从添加的节点中删除节点。因此,如果我删除一个节点,例如 treeview1.node[2]my node[3],则变为 node[2]。如何设置这个for循环?或者也许还有其他选择?

谢谢。

您可以为您的节点指定一个名称,

例如:

treeView1.Nodes.Add(new TreeNode() {Name="1",Text="chaper1" });
treeView1.Nodes.Add(new TreeNode() { Name = "2", Text = "chaper2" });
treeView1.Nodes.Add(new TreeNode() { Name = "3", Text = "chaper3" });

这样您就可以按名称而不是索引进行搜索

您可以简单地在树视图 Nodes 集合上使用 foreach 循环,例如:

var sb = new StringBuilder();
foreach (TreeNode node in treeView1.Nodes)
{
    sb.AppendLine(node.Text);
}

此外,如果您想添加一些其他文本 node.Text 您可以在创建节点并将其添加到树时将其他字符串存储在节点的 Tag 属性 中,例如添加节点时:

treeView1.Nodes.Add(new TreeNode("Text") { Tag = "Some Other Text" });

并且使用时:

var tag= node.Tag as string;
sb.AppendLine(string.IsNullOrEmplty(text)?node.Text:tag);