Mam więc problem z ustawieniem pętli for. Mam zdarzenie kliknięcia przycisku, w którym czytam tekst węzła i piszę do innego pliku tekst za pomocą appendline. Oto mój kod:
private void button3_Click(object sender, EventArgs e)
{
var header = File.ReadAllText(@"C:dirheader.tex");
var footer = File.ReadAllText(@"C:dirfooter.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: dirfinal.tex", sb.ToString());
}
Mój program usuwa węzły z dodanych węzłów. Na przykład jeśli usunę jeden węzeł treeview1.node[2]
, my node[3]
, staje się node[2]
. Jak ustawić to na pętlę? A może są inne opcje?
Dzięki.
Odpowiedzi:
1 dla odpowiedzi № 1Możesz po prostu użyć a foreach
zapętlić widok drzewa Nodes
kolekcja, na przykład:
var sb = new StringBuilder();
foreach (TreeNode node in treeView1.Nodes)
{
sb.AppendLine(node.Text);
}
Również jeśli chcesz dodać inny tekst node.Text
możesz przechowywać inny ciąg w Tag
właściwość węzła podczas tworzenia węzła i dodawania go do drzewa, na przykład podczas dodawania węzła:
treeView1.Nodes.Add(new TreeNode("Text") { Tag = "Some Other Text" });
A gdy używasz:
var tag= node.Tag as string;
sb.AppendLine(string.IsNullOrEmplty(text)?node.Text:tag);
0 dla odpowiedzi nr 2
Możesz przypisać nazwę do swojego węzła,
na przykład:
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" });
W ten sposób możesz wyszukiwać według nazwy, a nie według indeksu