在一个treeview里有很多node,我想实现右击一个node时候弹出一个contextmenustrip然后对这个node进行操作,怎么实现?contextmenustrip能得到右击调用它的对象吗?比如我想实现点击这个contextmenustrip的一个item的时候删除右击打开contextmenustrip的这个node,怎么弄?找来找去没找到

解决方案 »

  1.   

    这个看msdn, TreeView支持对任意一个节点设置右键弹出菜单; 至于菜单项操作书写相关事件处理代码即可
      

  2.   

    我记得是 TreeView 是可以设置 ContextMenuStrip 的,TreeNode 也是有这个属性的
      

  3.   

    treeview 右键
      

  4.   

    我之前一个小程序中用到的,仅供参考//trFile为TreeView
    private void trFile_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            TreeNode node = trFile.GetNodeAt(e.X, e.Y);
            if (node != null)
             {
                this.trFile.SelectedNode = node;
            }                
        }
    }
    //btnExpand为contextMenuStrip1的一个MenuItem
    private void btnExpand_Click(object sender, EventArgs e)
    {
        if (trFile.SelectedNode != null)
        {
            ExpandSelectNode(trFile.SelectedNode);
        }
    }
      

  5.   

    下面这段代码 删除与这个菜单的源控件treeview的选中节点. 还有其它定位方式,根据需要自己修改吧private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
    {
        TreeNode seleNode = ((sender as ContextMenuStrip).SourceControl as TreeView).SelectedNode;
        seleNode.Remove();
    }