J'ai donc du mal à définir ma boucle for. J'ai un événement de clic sur un bouton où je lis le texte du nœud et écrit dans un autre fichier du texte en utilisant appendline. Voici mon code:
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());
}
Mon programme supprime les nœuds des nœuds ajoutés. Donc, si je supprime un noeud, par exemple treeview1.node[2]
, my node[3]
, devient node[2]
. Comment définir cela pour la boucle? Ou peut-être il y a d'autres options?
Merci.
Réponses:
1 pour la réponse № 1Vous pouvez simplement utiliser un foreach
boucle sur votre treeview Nodes
collection, par exemple:
var sb = new StringBuilder();
foreach (TreeNode node in treeView1.Nodes)
{
sb.AppendLine(node.Text);
}
Aussi, si vous voulez ajouter un autre texte qui node.Text
vous pouvez stocker l'autre chaîne dans Tag
propriété du noeud lorsque vous créez le noeud et que vous l'ajoutez à l'arbre, par exemple, lors de l'ajout d'un noeud:
treeView1.Nodes.Add(new TreeNode("Text") { Tag = "Some Other Text" });
Et en utilisant:
var tag= node.Tag as string;
sb.AppendLine(string.IsNullOrEmplty(text)?node.Text:tag);
0 pour la réponse № 2
Vous pouvez attribuer un nom à votre noeud,
par exemple:
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" });
De cette façon, vous pouvez rechercher par nom et non par index