C# Winform TreeView 控件以及右键 ContextMenuStrip 菜单简单测试
▲ 样式
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WF_TREE_VIEW_TEST
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
StartPosition = FormStartPosition.CenterScreen;
treeView1.NodeMouseDoubleClick += TreeView1_NodeMouseClick; // 节点双击事件
treeView1.NodeMouseClick += TreeView1_NodeMouseClick1; // 节点单机事件
m_treeView = new TreeViewOperator(treeView1);
treeView1.MouseDown += TreeView1_MouseDown; // 树控件鼠标健按下事件
InitTreeView();
m_CMS = new ContextMenuStrip();
treeView1.ContextMenuStrip = m_CMS;
}
// 节点展开
private void TreeView1_NodeMouseClick1(object sender, TreeNodeMouseClickEventArgs e)
{
TreeView treeView = sender as TreeView;
TreeNode treeNode = treeView.GetNodeAt(e.X, e.Y);
treeNode.Expand(); // 点击节点的时候,展开。
}
private void TreeView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right) // 右键
{
treeView1.ContextMenuStrip.Tag = m_treeView.GetSelectedNodePath();
m_CMS.Items.Clear();
ToolStripMenuItem hi = new ToolStripMenuItem("Hello", null, tsmi_Clicked, "tsmi_Hello");
ToolStripMenuItem hii = new ToolStripMenuItem("Hi", null, tsmi_Clicked, "tsmi_Hi");
ToolStripSeparator separator = new ToolStripSeparator();
m_CMS.Items.Add(hi);
m_CMS.Items.Add(separator); // 添加分割行
m_CMS.Items.Add(hii);
hi.Enabled = false; // 控制启用
}
}
// 右键菜单项点击事件
private void tsmi_Clicked(object sender, EventArgs e)
{
ToolStripMenuItem item = sender as ToolStripMenuItem;
MessageBox.Show(item.Name + ":" + item.GetCurrentParent().Tag.ToString());
}
private ContextMenuStrip m_CMS;
private readonly TreeViewOperator m_treeView;
// 节点双击事件
private void TreeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
MessageBox.Show(m_treeView.GetSelectedNodePath());
}
// 添加节点
private void InitTreeView()
{
string line1 = "\\Recipe\\DIE\\9257\\三点找圆";
m_treeView.AddTreeNode(line1, VisionBranch.Recipe);
string line2 = "\\Recipe\\DIE\\9257\\找中心";
m_treeView.AddTreeNode(line2, VisionBranch.Recipe);
string line3 = "\\Recipe\\DIE\\9258\\找中心";
m_treeView.AddTreeNode(line3, VisionBranch.Recipe);
string line4 = "\\Recipe\\DIETRAY\\9258\\找中心";
m_treeView.AddTreeNode(line4, VisionBranch.Recipe);
string a = "\\SysVision\\Upcams\\cam_1\\9点标定";
string b = "\\SysVision\\DownCams\\cam_1\\9点标定";
m_treeView.AddTreeNode(a, VisionBranch.System);
m_treeView.AddTreeNode(b, VisionBranch.System);
}
}
}// end namespace
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了