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 に登録
・