そのため、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" });
この方法では、インデックスではなく名前で検索できます