在c#中的树视图控件上工作

时间:2011-06-08 13:05:56

标签: c# windows treeview contextmenu

我正在使用使用树视图的Windows应用程序。 当我右键单击树视图项时,它将显示上下文菜单。对于某些特定的命令操作,应禁用上下文菜单

简而言之,如何禁用树视图的上下文菜单

1 个答案:

答案 0 :(得分:3)

我认为没有禁用概念的选项,但如果您已经定义了每个树视图的树结构,或者每个树视图都有context menu,那么您可以按如下方式显示所需的TAG个项目可以为此numbers定义您自己的TAG。按照以下步骤进行尝试

private void tvwACH_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        tvwACH.SelectedNode = e.Node;
        if (Convert.ToInt16(e.Node.Tag) == 3)
        {
            New.Text = "New";
            contextMenu.Items.Remove(New);
            contextMenu.Items.Add(Save);
            contextMenu.Items.Add(Saveas);
            contextMenu.Items.Add(Remove);
            contextMenu.Items.Remove(addEntry);
        }

        if (tvwACH.SelectedNode.Tag == null)
        {
            string str = tvwACH.SelectedNode.Parent.ToString().Substring(10);
            if (str == "BatchHeader")
            {
                contextMenu.Items.Remove(New);
                contextMenu.Items.Remove(Remove);
                contextMenu.Items.Remove(Save);
                contextMenu.Items.Remove(Saveas);
                contextMenu.Items.Add(addEntry);

            }
            else
            {
                contextMenu.Items.Add(New);
                New.Text = "Add new Batch";
                contextMenu.Items.Remove(Remove);
                contextMenu.Items.Remove(Save);
                contextMenu.Items.Remove(Saveas);
                contextMenu.Items.Remove(addEntry);

            }
        }
        if (Convert.ToInt16(tvwACH.SelectedNode.Tag) == 1)
        {
            contextMenu.Items.Add(New);
            New.Text = "New";
            contextMenu.Items.Remove(Remove);
            contextMenu.Items.Remove(Saveas);
            contextMenu.Items.Remove(Save);
            contextMenu.Items.Remove(addEntry);
        }

        if (Convert.ToInt16(tvwACH.SelectedNode.Tag) == 2)
        {
            contextMenu.Items.Add(New);
            New.Text = "Add new FileHeader";
            contextMenu.Items.Remove(Remove);
            contextMenu.Items.Remove(Saveas);
            contextMenu.Items.Remove(Save);
            contextMenu.Items.Remove(addEntry);

        }
    }

根据您的要求,您可以执行以下操作,只需禁用或启用您不想要的项目,这也可以正常工作,但TAG对您很重要

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        treeView1.SelectedNode = e.Node;
        if (Convert.ToInt16(e.Node.Tag) == 1)
        {
            childToolStripMenuItem.Enabled = false;
            rootToolStripMenuItem.Enabled = true;
        }
        if (Convert.ToInt16(e.Node.Tag) == 2)
        {
            childToolStripMenuItem.Enabled = true;
            rootToolStripMenuItem.Enabled = false;
        }
    }