如何实现在treeview中鼠标右击节点或子节点时弹出选择菜单,如同windows中的操作一样 1、如何实现鼠标右击节点事件?2、如何弹出选择菜单? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.直接拉个contextMenuStrip进来表单2.设置treeview的contextMenuStrip为contextMenuStrip13.在treeView的AfterSelect事件取得节点node的值4.然后contextMenuStrip的ItemClicked事件写对应的处理 更下一下 雪上吹风,光着身子淋暴雨 的不应该使用 afterselect用 treeview.getnodeat()----------------------- CSDN 论坛助手 http://china-csdn.cn 设置TreeNode.ContextMenu 属性及TreeNode.ContextMenuStrip 属性为树节点添加关联菜单. 右键选中节点,可以参考下面的代码:private void treeView1_MouseDown(object sender, MouseEventArgs e){ if (e.Button == MouseButtons.Right) { TreeNode node = this.treeView1.GetNodeAt(e.Location); if (node != null) { this.treeView1.SelectedNode = node; } }} private void tv_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { string tvn; string tvnp; string tvnpp; string tvnppp; int selectIndex; if(e.Button==MouseButtons.Right) { if(tv.GetNodeAt(e.X,e.Y)!=null) { this.tvn=tv.GetNodeAt(e.X,e.Y).Text; if(tv.GetNodeAt(e.X,e.Y).Parent!=null) { this.tvnp=tv.GetNodeAt(e.X,e.Y).Parent.Text; if(tv.GetNodeAt(e.X,e.Y).Parent.Parent!=null) { this.tvnpp=tv.GetNodeAt(e.X,e.Y).Parent.Parent.Text; if(tv.GetNodeAt(e.X,e.Y).Parent.Parent.Parent!=null) { this.tvnppp=tv.GetNodeAt(e.X,e.Y).Parent.Parent.Parent.Text; } } } } this.selectIndex=tv.GetNodeAt(e.X,e.Y).SelectedImageIndex; if(this.selectIndex==0) { tv.ContextMenu=null; } else if(this.selectIndex==1) { tv.ContextMenu=null; tv.ContextMenu=this.tvaddcontextMenu; } else if(this.selectIndex==2) { tv.ContextMenu=null; tv.ContextMenu=this.tvcontextMenu; } else if(this.selectIndex==3) { tv.ContextMenu=null; tv.ContextMenu=this.tvdeletmendcontextMenu; } else if(this.selectIndex==4) { tv.ContextMenu=null; tv.ContextMenu=this.tvaddcontextMenu; } else if(this.selectIndex==5) { tv.ContextMenu=null; tv.ContextMenu=this.tvaddcontextMenu; } else if(this.selectIndex==6) { tv.ContextMenu=null; tv.ContextMenu=this.tvcontextMenu; } } } 生成个contextMenuStrip的实例,设置treeview的contextMenuStrip,最后在MouseDown事件中处理一下就可以啦。 VS2012为何不能用类ManagementClass???? 商城促销规则(打折)该如何设计--求思路 怎样才能对整条链表加锁? 接口有什么好处?什么情况下用? 请帮写一个正则表达式!!! (三个问题----3)如何使用框架 求:如何取消Windows窗体边框的突出效果,但要保留标题栏和控制菜单以及最大最小关闭按扭 关于C#编写FORM调用对话框的问题 十六进制数转换成byte[] 西门子的2128手机支持AT指令吗?能做gsm/gprs模块来开发吗? extsharp 中文乱码问题 .Net 中Exception 于 JAVA 中Exception 的讨论,大家给点意见
2.设置treeview的contextMenuStrip为contextMenuStrip1
3.在treeView的AfterSelect事件取得节点node的值
4.然后contextMenuStrip的ItemClicked事件写对应的处理
-----------------------
CSDN 论坛助手
http://china-csdn.cn
TreeNode.ContextMenu 属性
及
TreeNode.ContextMenuStrip 属性
为树节点添加关联菜单.
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
TreeNode node = this.treeView1.GetNodeAt(e.Location);
if (node != null)
{
this.treeView1.SelectedNode = node;
}
}
}
{
string tvn;
string tvnp;
string tvnpp;
string tvnppp;
int selectIndex; if(e.Button==MouseButtons.Right)
{ if(tv.GetNodeAt(e.X,e.Y)!=null)
{
this.tvn=tv.GetNodeAt(e.X,e.Y).Text;
if(tv.GetNodeAt(e.X,e.Y).Parent!=null)
{
this.tvnp=tv.GetNodeAt(e.X,e.Y).Parent.Text;
if(tv.GetNodeAt(e.X,e.Y).Parent.Parent!=null)
{
this.tvnpp=tv.GetNodeAt(e.X,e.Y).Parent.Parent.Text;
if(tv.GetNodeAt(e.X,e.Y).Parent.Parent.Parent!=null)
{
this.tvnppp=tv.GetNodeAt(e.X,e.Y).Parent.Parent.Parent.Text;
}
}
}
}
this.selectIndex=tv.GetNodeAt(e.X,e.Y).SelectedImageIndex;
if(this.selectIndex==0)
{
tv.ContextMenu=null;
}
else if(this.selectIndex==1)
{
tv.ContextMenu=null;
tv.ContextMenu=this.tvaddcontextMenu;
}
else if(this.selectIndex==2)
{
tv.ContextMenu=null;
tv.ContextMenu=this.tvcontextMenu;
}
else if(this.selectIndex==3)
{
tv.ContextMenu=null;
tv.ContextMenu=this.tvdeletmendcontextMenu;
}
else if(this.selectIndex==4)
{
tv.ContextMenu=null;
tv.ContextMenu=this.tvaddcontextMenu;
}
else if(this.selectIndex==5)
{
tv.ContextMenu=null;
tv.ContextMenu=this.tvaddcontextMenu;
}
else if(this.selectIndex==6)
{
tv.ContextMenu=null;
tv.ContextMenu=this.tvcontextMenu;
}
}
}