如何在 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);
所以我在设置 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);