Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4133206
  • 博文数量: 70
  • 博客积分: 5010
  • 博客等级: 大校
  • 技术积分: 1400
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-27 15:06
文章存档

2011年(2)

2010年(23)

2009年(21)

2008年(24)

我的朋友

分类:

2009-02-04 10:24:37

今天有一个功能需要在TreeView控件上的某个节点上右键弹出菜单,本来想想很简单,等做了才发现无法定位当前右键点击的节点,SelectNode获得的是当前选中的节点,但是右键之后不能让当前右键点击的节点处于选中状态,只是左键选中哪个SelectNode就获得哪个节点。在网上找了半天,都没有好的办法,或许这是一个BUG吧。
我自己想到一个笨办法,拿来大家分享,如果哪位有更好的方法请回复告诉我:
我把弹出菜单写到MouseUp事件里了,
void TreeView_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                viewForm.popupMenu1.ShowPopup(Cursor.Position);
                if (viewForm.resTree1.TreeView.GetNodeAt(e.X, e.Y) != null)
                {
                    viewForm.resTree1.TreeView.SelectedNode = viewForm.resTree1.TreeView.GetNodeAt(e.X, e.Y);
                }
            }
        }
通过上边代码可以发现:我们可以通过鼠标的位置获得当前节点,从而让它处于选中状态。
阅读(6874) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-11-27 16:01:27

嗯,这样能解决右键不能获取选中节点问题

chinaunix网友2009-03-25 17:08:44

private void tvRole_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right && tvRole.SelectedNode != null) { this.contextMenuTVRole.Show(tvRole, e.X, e.Y); } } private void tvRole_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { tvRole.SelectedNode = tvRole.HitTest(e.Location).Node;