💡
C# Visual TreeViewの扱い方(コード例)
今回実装したこと
- 左右クリックの判定
- クリックしたノードの判定
- クラスの紐づけとそれの取り出し
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