💡

C# Visual TreeViewの扱い方(コード例)

2025/02/09に公開

今回実装したこと

  • 左右クリックの判定
  • クリックしたノードの判定
  • クラスの紐づけとそれの取り出し
using static System.Windows.Forms.VisualStyles.VisualStyleElement;

namespace treeview_test
{
    public partial class Form1 : Form
    {
        public Form1()
        {

             
            InitializeComponent();


            for (int i = 0; i < 20; i++)
            {
                // 子ノードの追加
                TreeNode childNode1 = new TreeNode("子ノード" + i);
                childNode1.Tag = new id_name { ID = i, NAME = "test" + i };
                treeView1.Nodes.Add(childNode1);
                childNode1.Nodes.Add(new TreeNode("孫ノード"));
            }


            // 孫ノードの追加
            //childNode1.Nodes.Add(new TreeNode("孫ノード"));
        }
        private void treeView1_MouseClick(object sender, MouseEventArgs e)
        {
            switch (e.Button)
            {

                case MouseButtons.Left:
                    // Left click
                    break;

                case MouseButtons.Right:
                    TreeNode clickedNode = treeView1.GetNodeAt(e.X, e.Y);

                    if (clickedNode != null)
                    {
                        MessageBox.Show($"クリックされたノード: {clickedNode.Tag}");
                        if (clickedNode.Tag is id_name _inst)
                        {
                            MessageBox.Show($"社員ID: {_inst.ID}\n部署: {_inst.NAME}");
                        }
                    }

                    break;

            }
        }
    }
}
public class id_name
{
    public int ID { get; set; }
    public string NAME { get; set; }
}
namespace treeview_test
{
    partial class Form1
    {
        /// <summary>
        ///  Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        ///  Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        ///  Required method for Designer support - do not modify
        ///  the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            treeView1 = new TreeView();
            SuspendLayout();
            // 
            // treeView1
            // 
            treeView1.Location = new Point(0, 0);
            treeView1.Name = "treeView1";
            treeView1.Size = new Size(801, 346);
            treeView1.TabIndex = 0;
            treeView1.MouseClick += treeView1_MouseClick;
            // 
            // Form1
            // 
            AutoScaleDimensions = new SizeF(9F, 21F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(800, 450);
            Controls.Add(treeView1);
            Name = "Form1";
            Text = "Form1";
            ResumeLayout(false);
        }

        #endregion

        private TreeView treeView1;
    }
}


Discussion