
string[] Data=
{ "1 鈴木", "1 慎吾", "1 和子", "2 あゆみ", "2 優子", "3 まい", "0 " };
|
using System.Collections; // ArrayList
public class MyForm : Form
{
private TreeView treeView1;
string[] Data=
{ "1 鈴木", "1 慎吾", "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(254, 221);
this.treeView1.TabIndex = 0;
this.ClientSize = new System.Drawing.Size(278, 245);
this.Controls.Add(this.treeView1);
this.Name = "MyForm";
this.ResumeLayout(false);
}
|
private void MyForm_Load(object sender, System.EventArgs e)
{ TreeNode NodeRoot = new TreeNode("Root");
treeView1.Nodes.Clear();
Idx = 0;
Set_TVFunc(NodeRoot, '1');
treeView1.Nodes.Add(NodeRoot);
treeView1.TopNode.Expand();
}
|
// TreeView に登録する再帰関数
private void Set_TVFunc(TreeNode node, char lev)
{
ArrayList aray = new ArrayList();
char key;
aray = Set_Array(lev);
foreach (TreeNode DAT in aray)
{ node.Nodes.Add(DAT); }
key = Data[Idx][0];
if (key == '0') return;
Set_TVFunc(node.LastNode, key);
}
|
// 同一レベルのノードを ArrayList に登録
private ArrayList Set_Array(char lev)
{
ArrayList array = new ArrayList();
char key;
while(true)
{ key = Data[Idx][0];
//Console.WriteLine("lev=" + lev + " Idx=" + Idx + " key=" + key);
if (key != lev) break;
array.Add(new TreeNode(Data[Idx]));
Idx++;
}
return array;
}
|
// TreeView に登録する再帰関数
private void Set_TVFunc(TreeNode node, char lev)
{
char key;
key = Data[Idx][0];
if (key == '0') return;
if (key == lev)
{
node.Nodes.Add(new TreeNode(Data[Idx]));
Idx++;
Set_TVFunc(node, lev);
return;
}
Set_TVFunc(node.LastNode, key);
}
|
![]()
[Next Chapter ↓] Struct を TreeView に登録
[Previous Chapter ↑] TreeView に階層で登録