First of all i want tot thank you for your help, but similar code i already wrote by myself. 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;
}