TreeView に階層で登録

C# で TreeView にノードを階層構造で登録します。
TreeView に登録したノードを削除します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. TreeView は Windows エクスプローラでお馴染みの階層構造を持ったフォルダーなどを表示します。
    前回は単純な数件のノードだけでしたが、今度は階層(親・子)で登録してみましょう。
    空のプロジェクトから TreeView を設定して下さい。
    詳細は TreeView に登録する を参照して下さい。
  2. MyForm_Load() でノードを TreeView に登録します。
    Mago はノードの配列で "あゆみ", "優子" を定義しています。
    次に "慎吾" を定義して、その子として Mago を登録します。
    次に NodeRoot[] に Singo と "和子" を設定して TreeView に登録します。
    TopNode.Expand() で TreeView の先頭ノードを展開します。
    private void MyForm_Load(object sender, System.EventArgs e)
    {
        TreeNode[] Mago = { new TreeNode("あゆみ"), new TreeNode("優子") };
        TreeNode Singo = new TreeNode("慎吾", Mago);
        TreeNode[] NodeRoot = { Singo, new TreeNode("和子") };
        treeView1.Nodes.AddRange(NodeRoot);
        treeView1.TopNode.Expand();
    }
    
  3. 同じ処理をノードの配列を使わずに記述してみましょう。
    "慎吾" を定義して、Singo に "あゆみ", "優子" を登録します。
    次に TreeView に Singo に続いて "和子" を登録します。
    こちらの方が解り易いでしょうか。 (^_^;)
    private void MyForm_Load(object sender, System.EventArgs e)
    {   TreeNode Singo= new TreeNode("慎吾");
        Singo.Nodes.Add(new TreeNode("あゆみ"));
        Singo.Nodes.Add(new TreeNode("優子"));
        treeView1.Nodes.Add(Singo);
        treeView1.Nodes.Add(new TreeNode("和子"));
        treeView1.TopNode.Expand();
    }
    

  1. 今度は「親・子・孫」の関係で登録します。

    private void MyForm_Load(object sender, System.EventArgs e)
    {
        TreeNode[] Mago= { new TreeNode("あゆみ"), new TreeNode("優子") };
        TreeNode Singo= new TreeNode("慎吾", Mago);
        TreeNode[] Kazuku = { Singo, new TreeNode("和子") };
        TreeNode Suzuki = new TreeNode("鈴木", Kazuku);
        TreeNode[] Henry = { new TreeNode("ヘンリー") };
        TreeNode Tanaka = new TreeNode("田中", Henry);
        TreeNode[] Elizabeth = { new TreeNode("エリザベス") };
        TreeNode Sato = new TreeNode("佐藤", Elizabeth);
        TreeNode[] NodeRoot = { Suzuki, Tanaka, Sato };
        treeView1.Nodes.AddRange(NodeRoot);
        treeView1.TopNode.Expand();
    }
    
  2. 同じ処理をノードの配列を使わずに記述してみます。
    private void MyForm_Load(object sender, System.EventArgs e)
    {   treeView1.Nodes.Clear();
        TreeNode Suzuki = new TreeNode("鈴木");
        TreeNode Singo= new TreeNode("慎吾");
        Singo.Nodes.Add(new TreeNode("あゆみ"));
        Singo.Nodes.Add(new TreeNode("優子"));
        Suzuki.Nodes.Add(Singo);
        Suzuki.Nodes.Add(new TreeNode("和子"));
        TreeNode Tanaka = new TreeNode("田中");
        Tanaka.Nodes.Add(new TreeNode("ヘンリー"));
        TreeNode Sato = new TreeNode("佐藤");
        Sato.Nodes.Add(new TreeNode("エリザベス"));
        treeView1.Nodes.Add(Suzuki);
        treeView1.Nodes.Add(Tanaka);
        treeView1.Nodes.Add(Sato);
        treeView1.TopNode.Expand();
    }
    
  3. 同じ処理を上位のレベルから登録してみます。
    こちらの方が解り易いでしょうか。 (^_^;)
    private void MyHandler(object sender, PaintEventArgs e)
    {   treeView1.Nodes.Clear();
        TreeNode Suzuki = new TreeNode("鈴木");
        treeView1.Nodes.Add(Suzuki);
        TreeNode Tanaka = new TreeNode("田中");
        treeView1.Nodes.Add(Tanaka);
        TreeNode Sato = new TreeNode("佐藤");
        treeView1.Nodes.Add(Sato);
        TreeNode Singo= new TreeNode("慎吾");
        Suzuki.Nodes.Add(Singo);
        TreeNode Ayumi= new TreeNode("あゆみ");
        Singo.Nodes.Add(Ayumi);
        TreeNode Yuko = new TreeNode("優子");
        Singo.Nodes.Add(Yuko);
        TreeNode Kazuko= new TreeNode("和子");
        Suzuki.Nodes.Add(Kazuko);
        TreeNode Henry = new TreeNode("ヘンリー");
        Tanaka.Nodes.Add(Henry);        
        TreeNode Elizabeth = new TreeNode("エリザベス");
        Sato.Nodes.Add(Elizabeth);
    }
    
  4. Windows(C++) でも同様のプログラムを作成しています。
    超初心者のプログラム入門(Windows)から Tree View を表示する を参照して下さい。

【NOTE】

  1. Top Node を開くときは、次のように書きます。
        treeView1.TopNode.Expand();
    
  2. 全 Node を開くことも出来ます。
        treeView1.ExpandAll();      // 全 Node を開く
    
  3. "優子"の Node を開くときは、次のように書きます。
    "優子"が Top から開かれて、選択状態になります。
        treeView1.SelectedNode = Yuko;
    
  4. TreeNode を削除するときは node.Remove() を実行します。
    例えば、"鈴木" を削除するときは次のようになります。
        TreeNode Suzuki = new TreeNode("鈴木");
    
        // Suzuki は登録されている TreeNode とする
        Suzuki.Remove();
    

[Next Chapter ↓] 階層 Data を TreeView に登録
[Previous Chapter ↑]
TreeView に登録する

超初心者のプログラム入門(C# Frame Work)