TreeView 親ノード

TreeView でクリックされたノードの親を調べます。

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

プログラムの説明

  1. TreeView のノードを左クリックすると、選択されたノードと親ノードを表示します。
    プログラムは Command Line からコンパイル出来る形式で掲載します。
    ソースプログラム TreeParent.cs です。
    実行の方法は Command Line から Windows プログラムを実行 を参照して下さい。
    /*★ Tree View でクリックされた親を表示する    前田 稔 ★*/
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    public class MyForm : Form
    {
        private TreeView treeView1;
        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.treeView1.AfterSelect +=
                new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect);
    
            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 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.ExpandAll();  //Node を展開
        }
    
        // ノードの左クリックを検出
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            TreeNode selectedNode = e.Node;
            TreeNode parentNode = new TreeNode();
            parentNode = selectedNode.Parent;
            string msg = selectedNode.FullPath;
            if (parentNode!=null)   msg += " =の親は[" + parentNode.Text + "]です";
            MessageBox.Show(msg);
        }
    }
    
    class form01
    {   public static void Main()
        {   MyForm mf = new MyForm();
            Application.Run(mf);
        }
    }
    
  2. ノードの左クリックを検出するときは AfterSelect を使います。
            this.treeView1.AfterSelect +=
                new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect);
    
  3. クリックされたノードと、親ノードを取得します。
            TreeNode selectedNode = e.Node;
            TreeNode parentNode = new TreeNode();
            parentNode = selectedNode.Parent;
    
    クリックされたノード(フルパス)と、親ノード(名前だけ)を msg に編集します。
            string msg = selectedNode.FullPath;
            if (parentNode!=null)   msg += " =の親は[" + parentNode.Text + "]です";
    
    例えば、次のように表示されます。
    鈴木\慎吾\あゆみ =の親は[慎吾]です

【NOTE】

ボタンのクリックで、親ノード選択します。
private void button1_Click(object sender, EventArgs e)
{
  if (treeView1.SelectedNode.Parent != null)
  {
    treeView1.SelectedNode = treeView1.SelectedNode.Parent;
  }
  treeView1.Focus(); // フォーカスを設定
}

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