我实现的这棵树假设有2个层次,第一个层:机构集层次(一个装饰的层次,就这一个Node){"机构集层次"}
第二个层: 机构集{大学,政府}
我现在设计了二个右键菜单
第一个关联机构集层次:新建机构集
第二个关联机构集:编辑机构集,删除机构集我的解决方案是,每次在控件AfterSelected的事件里
判断这个是树的那个层次,如果是Selected的是第一层,我就关联一个右键菜单,如果是第二个类似.但是有那个这个事件判断有有个不好的界面友好性就是:
具体事例是:当我左键,点击了第一个层次(机构集层次),然后马上右键,点击第二个层次(假设是{大学}),它所获取的SelectedNode仍然是 {"机构集层次"}。
有没有直接判断右键的事件啊?或者别的技巧啊?我的目的就是,右键在相应的节点上弹出相应的右键菜单。
第二个层: 机构集{大学,政府}
我现在设计了二个右键菜单
第一个关联机构集层次:新建机构集
第二个关联机构集:编辑机构集,删除机构集我的解决方案是,每次在控件AfterSelected的事件里
判断这个是树的那个层次,如果是Selected的是第一层,我就关联一个右键菜单,如果是第二个类似.但是有那个这个事件判断有有个不好的界面友好性就是:
具体事例是:当我左键,点击了第一个层次(机构集层次),然后马上右键,点击第二个层次(假设是{大学}),它所获取的SelectedNode仍然是 {"机构集层次"}。
有没有直接判断右键的事件啊?或者别的技巧啊?我的目的就是,右键在相应的节点上弹出相应的右键菜单。
处理
oncontextmenu
事件
能说清楚一点吗?
谢谢了!
看不太明白阿
解决方案:在MouseDown事件里判断是不是右键点击,
然后用
try
{
TreeNode node = TreeView.GetNodeAt(e.X,e.Y);
....
this.Tree.SelectedNode = node;
}
可以这么写
if(TreeView.GetNodeAt(e.X,e.Y)!=null)
{}//选中
else
{}//未选中