Following code is work well:
- private void buttonSave_Click(object sender, EventArgs e)
-
{
-
TraverseTreeView(treeView1);
-
string temp = String.Empty;
-
foreach (string str in name)
-
temp += str + Environment.NewLine;
-
MessageBox.Show(temp);
-
name.Clear();
-
}
-
List<string> name = new List<string>();
-
private void TraverseTreeView(TreeView tview)
-
{
-
TreeNode temp = new TreeNode();
-
for (int k = 0; k < tview.Nodes.Count; k++)
-
{
-
temp = tview.Nodes[k];
-
name.Add(k+"\t"+temp.Text+"\tnull");
-
for (int i = 0; i < temp.Nodes.Count; i++)
-
visitChildNodes(temp.Nodes[i]);
-
}
-
}
-
private void visitChildNodes(TreeNode node)
-
{
-
name.Add(node.Text);
-
for (int j = 0; j < node.Nodes.Count; j++)
-
visitChildNodes(node.Nodes[j]);
-
}
But there is still several things that I don't know how to realize:
1. Do not use global variable (List<string> name) for collecting result;
2. Correctly collect data perhaps in DataTable, in format "1 | Aaron | null".
Please chech code below, and fix mistaks:
- private void buttonSave_Click(object sender, EventArgs e)
-
{
-
DataTable dt = new DataTable();
-
dt = TraverseTreeView(treeView1);
-
string temp = String.Empty;
-
foreach (string str in dt)
-
temp += str + Environment.NewLine;
-
MessageBox.Show(temp);
-
dt.Clear();
-
}
-
//List<string> name = new List<string>();
-
private DataTable TraverseTreeView(TreeView tview)
-
{
-
DataTable dt = new DataTable();
-
dt.Columns.Add("id", typeof(int));
-
dt.Columns.Add("Name");
-
dt.Columns.Add("ParentId", typeof(int));
-
TreeNode temp = new TreeNode();
-
for (int k = 0; k < tview.Nodes.Count; k++)
-
{
-
temp = tview.Nodes[k];
-
dt.Rows.Add(k, temp.Text, null);
-
//name.Add(temp.Text);
-
for (int i = 0; i < temp.Nodes.Counst; i++)
-
dt.Rows.Add(i, visitChildNodes(temp.Nodes[i]).Text, i - 1);
-
}
-
return dt;
-
}
-
private DataTable visitChildNodes(TreeNode node)
-
{
-
//name.Add(node.Text);
-
DataTable dt = new DataTable();
-
dt.Columns.Add("id", typeof(int));
-
dt.Columns.Add("Name");
-
dt.Columns.Add("ParentId", typeof(int));
-
for(int j = 0; j < node.Nodes.Count; j++)
-
dt.Rows.Add(j, visitChildNodes(node.Nodes[j]).Text, j - 1);
-
return dt;
-
}