日期:2014-05-17  浏览次数:21107 次

关于TreeView中调右键菜单的问题
有两种方案:
1.用TreeView的NodeMouseClick事件,动态生成ContextMenu,部分属性根据该事件的e.Node换取currentnode得到,但Debug时NodeMouseClick事件被触发两次,求解。
2.在TreeView上绑ContextMenuStrip控件,想通过TreeView的GetNodeAt来获取currentnode,但currentnode始终为空,求解。

谢谢

------解决方案--------------------
再右键菜单点击的事件处理函数中用((((sender as ToolStripMenuItem).Owner) as ContextMenuStrip).SourceControl)as TreeNode看看能不能获取到当前点击的节点
------解决方案--------------------
1.直接用MouseClick 事件
2.贴代码
------解决方案--------------------
引用:
Quote: 引用:

1.直接用MouseClick 事件
2.贴代码

ContextMenuStrip cms = sender as ContextMenuStrip;
            TreeNode currNode = this.ProjectList.GetNodeAt(cms.Bounds.Location);


  
  private void treeView_MouseDown(object sender, MouseEventArgs e)
        {
            TreeNode node = treeView2.GetNodeAt(e.X, e.Y);
         }