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

TreeView控件上的右键菜单
在treeView控件上添加右键菜单,想要实现以下功能:
一、在没有选中treeView中任何一项时右键会弹出一个菜单,
二、在选中treeView中某一项时右键会弹出一个不同的菜单。
新手求教,请提供思路,谢谢。
------最佳解决方案--------------------
引用:
引用:自己通过代码去绑定弹出菜单吧,
在treeview中的keydown事件去判断,要弹出的是那个菜单
如果不定义Form的话,那么contextMenuStrip控件是通过什么方法让它弹出的呢?


        private void treeView1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                ContextMenuStrip cms = new ContextMenuStrip();
                if (treeView1.SelectedNode == null)
                {
                    ToolStripMenuItem newItem = new ToolStripMenuItem();
                    newItem.Text = "菜单1";
                    cms.Items.Add(newItem);
                }
                else
                {
                    ToolStripMenuItem newItem = new ToolStripMenuItem();
                    newItem.Text = "菜单2";
                    cms.Items.Add(newItem);
                }
                treeView1.ContextMenuStrip = cms;
            }
        }

用contextMenuStrip才是正确的,上面的例子没有选中时弹出“菜单1”,有选中时弹出“菜单2”

如果你的意思是判断有没有在选中节点上点击右键的话,用下面这个判断:
if (this.treeView1.SelectedNode == treeView1.GetNodeAt(e.Location))
------其他解决方案--------------------
自己通过代码去绑定弹出菜单吧,
在treeview中的keydown事件去判断,要弹出的是那个菜单
------其他解决方案--------------------
自己通过代码去绑定弹出菜单吧,
在treeview中的keydown事件去判断,要弹出的是那个菜单
------其他解决方案--------------------
看看怎么样啊

------其他解决方案--------------------
引用:
自己通过代码去绑定弹出菜单吧,
在treeview中的keydown事件去判断,要弹出的是那个菜单

但是自定义菜单不就要定义一个Form,如何把这个Form定义得和右键菜单一样没有边框呢?
------其他解决方案--------------------