在c#中使用treeview时,将文本字段保存到数组(并从数组中提取数据)

好的,我有一个树视图,我用它来显示许多节点。 我希望将数据(三个文本框字段)附加到每个节点,但我不想在树中显示它。 我希望尽可能将数据保存到string []数组中。 当我单击树中的新节点并从新节点的数组中提取信息时,我希望框中的数据保存到数组中。

由于某种原因,我的代码不起作用。 它不保存信息,有时它只是在我点击时在文本框中显示随机数据。 代码是:

These are global variables within the form: string[] desc1; string[] desc2; string[] desc3; private void treeView1_BeforeSelect(object sender, TreeViewEventArgs e) { // save the entered text into the local variables desc1[treeView1.SelectedNode.Index] = textBox4.Text; desc2[treeView1.SelectedNode.Index] = textBox5.Text; desc3[treeView1.SelectedNode.Index] = textBox6.Text; } private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { // update labels label23.Text = treeView1.SelectedNode.Text.ToString(); label24.Text = (treeView1.SelectedNode.Index + 1).ToString(); // enable all textbox fields textBox4.Enabled = true; textBox5.Enabled = true; textBox6.Enabled = true; // clear all textbox fields textBox4.Text = null; textBox5.Text = null; textBox6.Text = null; // if parent is selected then show as unselected - if not update text fields if (treeView1.SelectedNode.Text.ToString() == "Parent Name") { label23.Text = "Unselected"; label24.Text = "Unselected"; textBox4.Enabled = false; textBox5.Enabled = false; textBox6.Enabled = false; } else { // show the information from the array in the text fields textBox4.Text = desc1[treeView1.SelectedNode.Index]; textBox5.Text = desc2[treeView1.SelectedNode.Index]; textBox6.Text = desc3[treeView1.SelectedNode.Index]; } } 

任何人都知道我能做什么? 我已经拖了谷歌24小时没有运气。 谢谢!

TreeNodes具有Tag属性,您可以使用它来附加您想要的任何类型的数据。

你会像这样使用它:

 // To set the data: myTreeNode.Tag = new string[] { "1", "2", "3" }; // To read the data: var data = myTreeNod.Tag as string[]; 

arrays不是初始化的。

将所有对SelectedNode的引用替换为TreeViewEventArgs.Node

代码示例:

 private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { // update labels label23.Text = e.Node.Text.ToString(); label24.Text = (e.Node.Index + 1).ToString(); // etc etc... }