[英]How to set file name to a added and not removed treeview node
首先,我将父节点和子节点添加到树视图中,并带有按钮单击事件:
private void button1_Click(object sender, EventArgs e)
{
treeView1.Nodes.Add("chapter1");
treeView1.Nodes.Add("chapter2");
treeView1.Nodes.Add("chapter3");
treeView1.Nodes[0].Nodes.Add("sec1");
treeView1.Nodes[0].Nodes.Add("sec2");
treeView1.Nodes[0].Nodes.Add("sec3");
treeView1.Nodes[1].Nodes.Add("sec1");
treeView1.Nodes[1].Nodes.Add("sec2");
treeView1.Nodes[1].Nodes.Add("sec3");
treeView1.Nodes[2].Nodes.Add("sec1");
treeView1.Nodes[2].Nodes.Add("sec2");
treeView1.Nodes[2].Nodes.Add("sec3");
}
稍后,我创建一个删除按钮单击事件:
private void button2_Click(object sender, EventArgs e)
{
RemoveChecked(treeView1.Nodes);
}
void RemoveChecked(TreeNodeCollection nodes)
{
foreach (TreeNode checkedNode in FindCheckedNodes(nodes))
{
nodes.Remove(checkedNode);
}
}
private List<TreeNode> FindCheckedNodes(TreeNodeCollection nodes)
{
List<TreeNode> checkedNodes = new List<TreeNode>();
foreach (TreeNode node in nodes)
{
if (node.Checked)
{
checkedNodes.Add(node);
}
else
{
// find checked childs
checkedNodes.AddRange(FindCheckedNodes(node.Nodes));
}
}
return checkedNodes;
}
现在,我想生成添加到文件中而不删除的所有内容。 我正在使用乳胶文件,因此我只需要编写\\ include即可。 因此,我使用页眉和页脚文件,以及它们之间的最终文件-在这里我应该将它们放在一起并添加生成的选项。 因此,我想到了3按钮单击事件,例如:
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 node added and not removed with chapter1 text , sb.Appendline("\include {chapter1})
sb.AppendLine(footer);
File.WriteAllText(@"C: \dir\final.tex", sb.ToString());
}
也许您可以向我提供如何使我的作品得到评论?
谢谢。
TreeNode具有Tag属性,您可以使用该属性将任何对象固定到其上,因此,固定的是路径,该路径随后用于写入最终块。
还重构了树视图节点的附加部分。
这应该工作:
private TreeNode Append(TreeNode parent, string text)
{
TreeNode newNode;
if (parent != null)
{
newNode = parent.Nodes.Add(text);
newNode.Tag = parent.Tag + "\\{" + text + "}";
}
else
{
newNode = treeView1.Nodes.Add(text);
newNode.Tag = "{" + text + "}";
}
return newNode;
}
private void button1_Click(object sender, EventArgs e)
{
TreeNode chapter1 = Append(null, "chapter1");
Append(chapter1, "sec1");
Append(chapter1, "sec2");
Append(chapter1, "sec3");
TreeNode chapter2 = Append(null, "chapter2");
Append(chapter2, "sec1");
Append(chapter2, "sec2");
Append(chapter2, "sec3");
TreeNode chapter3 = Append(null, "chapter3");
Append(chapter3, "sec1");
Append(chapter3, "sec2");
Append(chapter3, "sec3");
}
private void IncludeChapterAndSections(TreeNode treeNode, StringBuilder sb)
{
TreeNodeCollection children = treeNode != null ? treeNode.Nodes : treeView1.Nodes;
if (treeNode != null)
{
sb.AppendFormat("\\include {0}", treeNode.Tag.ToString());
sb.AppendLine();
}
foreach (TreeNode child in children)
{
IncludeChapterAndSections(child, sb);
}
}
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);
IncludeChapterAndSections(null, sb);
sb.AppendLine(footer);
File.WriteAllText(@"C:\dir\final.tex", sb.ToString());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.