Windows 窗体 TreeView 控件显示节点的层次结构,类似于 Windows 资源管理器左窗格中显示的文件和文件夹。 通过设置 ContextMenuStrip 属性,你可以在用户右键单击 TreeView 控件时向他们提供上下文相关操作。 通过将 ContextMenuStrip 组件与单个 TreeNode 项相关联,可以将自定义的快捷菜单功能级别添加到 TreeView 控件。

以编程方式将快捷菜单与 TreeNode 相关联

  • 使用适当的属性设置实例化 TreeView 控件,创建根 TreeNode ,然后添加子节点。

  • 实例化 ContextMenuStrip 组件,然后为要在运行时提供的每个操作添加一个 ToolStripMenuItem

  • 将相应 TreeNode ContextMenuStrip 属性设置为创建的快捷菜单。

  • 设置此属性后,右键单击节点时将显示快捷菜单。

    下面的代码示例创建一个基本的 TreeView 以及与 TreeView 的根 TreeNode 相关联的 ContextMenuStrip 。 你需要将菜单选项自定义为适合你开发的 TreeView 的菜单选项。 此外,还需要编写代码来处理这些菜单项的 Click 事件。

        // Declare the TreeView and ContextMenuStrip
    private:
        TreeView^ menuTreeView;
    private:
        System::Windows::Forms::ContextMenuStrip^ docMenu;
    public:
        void InitializeMenuTreeView()
            // Create the TreeView.
            menuTreeView = gcnew TreeView();
            menuTreeView->Size = System::Drawing::Size(200, 200);
            // Create the root node.
            TreeNode^ docNode = gcnew TreeNode("Documents");
            // Add some additional nodes.
            docNode->Nodes->Add("phoneList.doc");
            docNode->Nodes->Add("resume.doc");
            // Add the root nodes to the TreeView.
            menuTreeView->Nodes->Add(docNode);
            // Create the ContextMenuStrip.
            docMenu = gcnew System::Windows::Forms::ContextMenuStrip();
            //Create some menu items.
            ToolStripMenuItem^ openLabel = gcnew ToolStripMenuItem();
            openLabel->Text = "Open";
            ToolStripMenuItem^ deleteLabel = gcnew ToolStripMenuItem();
            deleteLabel->Text = "Delete";
            ToolStripMenuItem^ renameLabel = gcnew ToolStripMenuItem();
            renameLabel->Text = "Rename";
            //Add the menu items to the menu.
            docMenu->Items->AddRange(gcnew array<ToolStripMenuItem^>{openLabel,
                deleteLabel, renameLabel});
            // Set the ContextMenuStrip property to the ContextMenuStrip.
            docNode->ContextMenuStrip = docMenu;
            // Add the TreeView to the form.
            this->Controls->Add(menuTreeView);
    
    // Declare the TreeView and ContextMenuStrip
    private TreeView menuTreeView;
    private ContextMenuStrip docMenu;
    public void InitializeMenuTreeView()
        // Create the TreeView.
        menuTreeView = new TreeView();
        menuTreeView.Size = new Size(200, 200);
        // Create the root node.
        TreeNode docNode = new TreeNode("Documents");
        // Add some additional nodes.
        docNode.Nodes.Add("phoneList.doc");
        docNode.Nodes.Add("resume.doc");
        // Add the root nodes to the TreeView.
        menuTreeView.Nodes.Add(docNode);
        // Create the ContextMenuStrip.
        docMenu = new ContextMenuStrip();
        //Create some menu items.
        ToolStripMenuItem openLabel = new ToolStripMenuItem();
        openLabel.Text = "Open";
        ToolStripMenuItem deleteLabel = new ToolStripMenuItem();
        deleteLabel.Text = "Delete";
        ToolStripMenuItem renameLabel = new ToolStripMenuItem();
        renameLabel.Text = "Rename";
        //Add the menu items to the menu.
        docMenu.Items.AddRange(new ToolStripMenuItem[]{openLabel,
            deleteLabel, renameLabel});
        // Set the ContextMenuStrip property to the ContextMenuStrip.
        docNode.ContextMenuStrip = docMenu;
        // Add the TreeView to the form.
        this.Controls.Add(menuTreeView);
    
    ' Declare the TreeView and ContextMenuStrip
    Private menuTreeView As TreeView
    Private docMenu As ContextMenuStrip
    Public Sub InitializeMenuTreeView() 
        ' Create the TreeView.
        menuTreeView = New TreeView()
        menuTreeView.Size = New Size(200, 200)
        ' Create the root node.
        Dim docNode As New TreeNode("Documents")
        ' Add some additional nodes.
        docNode.Nodes.Add("phoneList.doc")
        docNode.Nodes.Add("resume.doc")
        ' Add the root nodes to the TreeView.
        menuTreeView.Nodes.Add(docNode)
        ' Create the ContextMenuStrip.
        docMenu = New ContextMenuStrip()
        'Create some menu items.
        Dim openLabel As New ToolStripMenuItem()
        openLabel.Text = "Open"
        Dim deleteLabel As New ToolStripMenuItem()
        deleteLabel.Text = "Delete"
        Dim renameLabel As New ToolStripMenuItem()
        renameLabel.Text = "Rename"
        'Add the menu items to the menu.
        docMenu.Items.AddRange(New ToolStripMenuItem() _
            {openLabel, deleteLabel, renameLabel})
        ' Set the ContextMenuStrip property to the ContextMenuStrip.
        docNode.ContextMenuStrip = docMenu
        ' Add the TreeView to the form.
        Me.Controls.Add(menuTreeView)
    End Sub
    
  • ContextMenuStrip
  • TreeView 控件
  •