
string[] Data=
{ "1 鈴木", "2 慎吾", "2 和子", "3 あゆみ", "3 優子", "4 まい",
"2 ヘンリー", "3 景子", "4 えみ", "4 裕二",
"3 紀香", "4 菜々子",
"1 田中", "2 祐希", "3 雅治",
"1 佐藤", "2 孝雄", "2 エリザベス", "3 さとみ", "0 "
};
|
public class MyForm : Form
{
private TreeView treeView1;
string[] Data=
{ "1 鈴木", "2 慎吾", "2 和子", "3 あゆみ", "3 優子", "4 まい",
"2 ヘンリー", "3 景子", "4 えみ", "4 裕二",
"3 紀香", "4 菜々子",
"1 佐藤", "2 孝雄", "2 エリザベス", "3 さとみ", "0 "
};
int Idx;
|
public MyForm()
{
InitializeComponent();
Load += new System.EventHandler(MyForm_Load);
}
|
private void InitializeComponent()
{
this.treeView1 = new System.Windows.Forms.TreeView();
this.SuspendLayout();
this.treeView1.Location = new System.Drawing.Point(12, 12);
this.treeView1.Name = "treeView1";
this.treeView1.Size = new System.Drawing.Size(250, 300);
this.treeView1.TabIndex = 0;
this.ClientSize = new System.Drawing.Size(280, 320);
this.Controls.Add(this.treeView1);
this.Name = "MyForm";
this.ResumeLayout(false);
}
|
private void MyForm_Load(object sender, System.EventArgs e)
{
treeView1.Nodes.Clear();
TreeNode NodeRoot = new TreeNode("1 Root");
Idx = 0;
Set_TVFunc(NodeRoot, '1');
treeView1.Nodes.Add(NodeRoot);
treeView1.TopNode.Expand();
}
|
// TreeView に登録する再帰関数
private void Set_TVFunc(TreeNode node, char lev)
{ char key;
key = Data[Idx][0];
//Console.WriteLine("lev=" + lev + " key=" + key + " Idx=" + Idx);
if (key == '0') return;
if (key == lev)
{
node.Nodes.Add(new TreeNode(Data[Idx]));
Idx++;
Set_TVFunc(node, lev);
}
if (key > lev) Set_TVFunc(node.LastNode, key);
// 関数が return すると、ここに制御が戻ります
if (key == lev) Set_TVFunc(node, lev);
}
|

Set_TVFunc(TreeView node, char lev) //lev=1 で呼ばれる
Set_TVFunc(TreeNode node, char lev) //lev>1 のとき呼ばれる
|
private void MyForm_Load(object sender, System.EventArgs e)
{
treeView1.Nodes.Clear();
Idx = 0;
Set_TVFunc(treeView1, '1');
treeView1.TopNode.Expand();
}
|
// TreeView に登録する関数(lev=1 で呼ばれる)
private void Set_TVFunc(TreeView node, char lev)
{ TreeNode wk;
char key;
int cnt;
key = Data[Idx][0];
if (key == '0') return;
if (key == '1')
{
node.Nodes.Add(new TreeNode(Data[Idx]));
Idx++;
Set_TVFunc(node, '1');
}
if (key > lev)
{
wk = node.TopNode;
while(wk.NextNode!=null) wk = wk.NextNode;
Set_TVFunc(wk, key);
}
if (key == lev) Set_TVFunc(node, lev);
}
|
treeView1.Nodes.Add(new TreeNode(Data[Idx]));
node.Nodes.Add(new TreeNode(Data[Idx]));
|
Set_TVFunc((TreeNode)treeView1, '1');
|
TreeNode NodeRoot;
NodeRoot = treeView1.TopNode;
|
TreeNode NodeRoot, wk;
wk = NodeRoot.FirstNode;
treeView1.Nodes.Add(wk);
wk = NodeRoot.LastNode;
treeView1.Nodes.Add(wk);
|

wk = NodeRoot.FirstNode;
wk = wk.NextNode;
|
using System;
using System.Drawing;
using System.Windows.Forms;
public class MyForm : Form
{
private TreeView treeView1;
string[] Data=
{ "1 鈴木", "1 田中", "1 佐藤", "0 " };
int Idx;
public MyForm()
{
InitializeComponent();
Load += new System.EventHandler(MyForm_Load);
}
private void InitializeComponent()
{
this.treeView1 = new System.Windows.Forms.TreeView();
this.SuspendLayout();
this.treeView1.Location = new System.Drawing.Point(12, 12);
this.treeView1.Name = "treeView1";
this.treeView1.Size = new System.Drawing.Size(250, 320);
this.treeView1.TabIndex = 0;
this.ClientSize = new System.Drawing.Size(280, 340);
this.Controls.Add(this.treeView1);
this.Name = "MyForm";
this.ResumeLayout(false);
}
private void MyForm_Load(object sender, System.EventArgs e)
{
TreeNode NodeRoot, wk;
treeView1.Nodes.Clear();
NodeRoot = new TreeNode("1 Root");
Idx = 0;
Set_TVFunc(NodeRoot, '1');
int cnt = NodeRoot.GetNodeCount(false);
Console.WriteLine("Count= {0}", cnt); //3件のデータが登録されている
//treeView1.Nodes.Add(NodeRoot); //3件のデータが正常に表示される
wk = NodeRoot.FirstNode;
treeView1.Nodes.Add(wk); //1 鈴木 が表示される
//wk = wk.NextNode;
//treeView1.Nodes.Add(wk); //wk が null になる
wk = NodeRoot.LastNode;
treeView1.Nodes.Add(wk); //1 佐藤 が表示される
treeView1.TopNode.Expand();
}
// TreeView に登録する再帰関数
private void Set_TVFunc(TreeNode node, char lev)
{
node.Nodes.Add(new TreeNode(Data[0]));
node.Nodes.Add(new TreeNode(Data[1]));
node.Nodes.Add(new TreeNode(Data[2]));
}
}
class form01
{ public static void Main()
{ MyForm mf = new MyForm();
Application.Run(mf);
}
}
|
![]()
[Previous Chapter ↑] 階層 Data を TreeView に登録
・