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 に階層で登録