/ /ツリービューwinformsでforループを作成する方法-C#、winforms、ツリービュー、ノード

ツリービューwinformsのループを作る方法 - c#、winforms、treeview、nodes

そのため、forループの設定に問題があります。 Nodeテキストを読み取り、appendlineを使用してテキストを別のファイルに書き込むボタンクリックイベントがあります。ここに私のコードがあります:

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());
}

私のプログラムは、追加されたノードからノードを削除しています。したがって、たとえば、1つのノードを削除すると treeview1.node[2], my node[3]になる node[2]。これをforループに設定する方法は?それとも他のオプションがありますか?

ありがとう。

回答:

回答№1は1

あなたは単純に foreach ツリービューをループします Nodes コレクション、例えば:

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);

回答№2の場合は0

ノードに名前を割り当てることができますが、

例えば:

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" });

この方法では、インデックスではなく名前で検索できます