如何在treeview上设定右键菜单

qq_35417357 2019-04-11 09:11:54
在treeview上设定右键菜单,只有在节点上才能显示,且要求不同节点可以绑定不同的ContextMenuStrip
...全文
656 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
楠楠小可爱 2019-05-20
  • 打赏
  • 举报
回复
引用 6 楼 caozhy的回复:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Q392565471
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void treeView1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
treeView1.ContextMenu.Show(treeView1, e.Location);
}
}

private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
var node = treeView1.HitTest(e.X, e.Y);
treeView1.SelectedNode = node.Node;
if (node.Node == null)
{
treeView1.ContextMenu = new ContextMenu();
treeView1.ContextMenu.MenuItems.Add("添加节点", new EventHandler((x, y) => MessageBox.Show("添加节点")));
}
else
{
treeView1.ContextMenu = new ContextMenu();
treeView1.ContextMenu.MenuItems.Add("打开 " + node.Node.Text, new EventHandler((x, y) => MessageBox.Show("选择了 " + node.Node.Text)));
treeView1.ContextMenu.MenuItems.Add("删除 " + node.Node.Text, new EventHandler((x, y) => MessageBox.Show("是否删除 " + node.Node.Text)));
}
}
}
}


刚刚说错了,节点右键菜单每一项的图标怎么添加呀
楠楠小可爱 2019-05-20
  • 打赏
  • 举报
回复
引用 6 楼 caozhy的回复:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Q392565471
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void treeView1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
treeView1.ContextMenu.Show(treeView1, e.Location);
}
}

private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
var node = treeView1.HitTest(e.X, e.Y);
treeView1.SelectedNode = node.Node;
if (node.Node == null)
{
treeView1.ContextMenu = new ContextMenu();
treeView1.ContextMenu.MenuItems.Add("添加节点", new EventHandler((x, y) => MessageBox.Show("添加节点")));
}
else
{
treeView1.ContextMenu = new ContextMenu();
treeView1.ContextMenu.MenuItems.Add("打开 " + node.Node.Text, new EventHandler((x, y) => MessageBox.Show("选择了 " + node.Node.Text)));
treeView1.ContextMenu.MenuItems.Add("删除 " + node.Node.Text, new EventHandler((x, y) => MessageBox.Show("是否删除 " + node.Node.Text)));
}
}
}
}


请问节点右键菜单每一项的节点怎么添加呀
  • 打赏
  • 举报
回复
引用 9 楼 caozhy 的回复:
[quote=引用 8 楼 智者知已应修善业 的回复:]
也就是说只要建立多个快捷,用条件判断加载就是了,没看出有何区别。


lz主要是问这个
var node = treeView1.HitTest(e.X, e.Y);
treeView1.SelectedNode = node.Node;
if (node.Node == null)
在这里判断,如果是在空白的地方点的,那么node.Node == null(VB的写法是node.Node Is Nothing)
那么就取消菜单即可[/quote]
或许你说得对!

或许可能要的是

树状.Nodes.Add("节点3").ContextMenuStrip = 快捷

threenewbee 2019-04-13
  • 打赏
  • 举报
回复
引用 8 楼 智者知已应修善业 的回复:
也就是说只要建立多个快捷,用条件判断加载就是了,没看出有何区别。
lz主要是问这个 var node = treeView1.HitTest(e.X, e.Y); treeView1.SelectedNode = node.Node; if (node.Node == null) 在这里判断,如果是在空白的地方点的,那么node.Node == null(VB的写法是node.Node Is Nothing) 那么就取消菜单即可
  • 打赏
  • 举报
回复
也就是说只要建立多个快捷,用条件判断加载就是了,没看出有何区别。
qq_35417357 2019-04-13
  • 打赏
  • 举报
回复
引用 3 楼 智者知已应修善业 的回复:

        快捷 = New ContextMenuStrip
        树状 = New TreeView

        快捷.Items.Add("快捷1")
        快捷.Items.Add("快捷2")
        快捷.Items.Add("快捷3")

        树状.ContextMenuStrip = 快捷
        树状.Nodes.Add("节点1")
        树状.Nodes.Add("节点2")
        树状.Nodes.Add("节点3")
这个好像只要在treeview控件上就可以用右键,我需要的是在只有是点击树上才能用,其他区域不能用
  • 打赏
  • 举报
回复
与楼上的有什么不同?都可以实现想要的功能。
threenewbee 2019-04-13
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Q392565471
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void treeView1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
treeView1.ContextMenu.Show(treeView1, e.Location);
}
}

private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
var node = treeView1.HitTest(e.X, e.Y);
treeView1.SelectedNode = node.Node;
if (node.Node == null)
{
treeView1.ContextMenu = new ContextMenu();
treeView1.ContextMenu.MenuItems.Add("添加节点", new EventHandler((x, y) => MessageBox.Show("添加节点")));
}
else
{
treeView1.ContextMenu = new ContextMenu();
treeView1.ContextMenu.MenuItems.Add("打开 " + node.Node.Text, new EventHandler((x, y) => MessageBox.Show("选择了 " + node.Node.Text)));
treeView1.ContextMenu.MenuItems.Add("删除 " + node.Node.Text, new EventHandler((x, y) => MessageBox.Show("是否删除 " + node.Node.Text)));
}
}
}
}


  • 打赏
  • 举报
回复
那么高端等后面来人给答案。
  • 打赏
  • 举报
回复


快捷 = New ContextMenuStrip
树状 = New TreeView

快捷.Items.Add("快捷1")
快捷.Items.Add("快捷2")
快捷.Items.Add("快捷3")

树状.ContextMenuStrip = 快捷
树状.Nodes.Add("节点1")
树状.Nodes.Add("节点2")
树状.Nodes.Add("节点3")
  • 打赏
  • 举报
回复

Dim 树状 As TreeView
Dim 快捷 As ContextMenuStrip
快捷 = New ContextMenuStrip
快捷.Items.Add("111")
快捷.Items.Add("222")
快捷.Items.Add("333")
树状 = New TreeView
树状.Parent = Me
树状.ContextMenuStrip = 快捷

  • 打赏
  • 举报
回复

TreeView 分类树 = new TreeView();
ContextMenuStrip 快捷 = new ContextMenuStrip();
分类树.ContextMenuStrip = 快捷;
内容概要:本文围绕“单相逆变器闭环逆变电路PWM模型仿真研究”展开,基于Simulink平台构建单相逆变器的闭环控制系统仿真模型,重点研究PWM调制技术在逆变电路中的应用与实现。文中详细阐述了系统架构设计、电压电流双闭环控制策略的实现原理、控制器参数设计及仿真建模全过程,并通过仿真结果验证了控制方案在动态响应、稳态精度与系统稳定性方面的有效性。同时,文档还涵盖多种电力电子系统典型应用场景,如多类型短路故障仿真(中性点不接地、经小电阻接地、经消弧线圈接地等)、软开关技术、微电网能量管理、MPPT控制等,体现出较强的技术综合性和工程实践价值。; 适合人群:电气工程、自动化、电力电子与新能源等相关专业的高校本科生、研究生、科研人员,以及从事电力系统仿真、逆变器设计与新能源并网技术研发的工程技术人员。; 使用场景及目标:①掌握基于Simulink的单相逆变器闭环控制系统建模与PWM仿真方法;②深入理解双闭环控制、SPWM/SVPWM调制、系统稳定性分析等核心技术原理;③为课程设计、毕业设计、科研项目或实际工程开发提供可复用的仿真模型与技术支持; 阅读建议:建议结合文中仿真模型动手实践,重点掌握PI控制器参数整定、PWM信号生成机制与仿真结果分析方法,同时可延伸学习文档中涉及的软开关、故障仿真、微电网控制等关联技术,以拓展系统级设计能力。

16,718

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧