日期:2014-05-20  浏览次数:21099 次

请教一个[控件树]上控制右键菜单的一个问题。DotNet 1.1
我实现的这棵树假设有2个层次,

第一个层:机构集层次(一个装饰的层次,就这一个Node){ "机构集层次 "}
第二个层:   机构集{大学,政府}


我现在设计了二个右键菜单
第一个关联机构集层次:新建机构集
第二个关联机构集:编辑机构集,删除机构集

我的解决方案是,每次在控件AfterSelected的事件里
判断这个是树的那个层次,如果是Selected的是第一层,我就关联一个右键菜单,如果是第二个类似.

但是有那个这个事件判断有有个不好的界面友好性就是:
具体事例是:当我左键,点击了第一个层次(机构集层次),然后马上右键,点击第二个层次(假设是{大学}),它所获取的SelectedNode仍然是   { "机构集层次 "}。
有没有直接判断右键的事件啊?或者别的技巧啊?

我的目的就是,右键在相应的节点上弹出相应的右键菜单。

------解决方案--------------------
你这么写还是会有一点滞后(第一次点击空白处时,会有一点延迟)
可以这么写
if(TreeView.GetNodeAt(e.X,e.Y)!=null)
{}//选中
else
{}//未选中