/ / comment créer une boucle dans winforms de treeview - c #, winforms, treeview, noeuds

comment créer une boucle dans winforms de treeview - c #, winforms, treeview, noeuds

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 № 1

Vous 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