Partager via


Comment : attacher un menu contextuel à un nœud TreeView

Mise à jour : novembre 2007

Le contrôle TreeView Windows Forms affiche des nœuds selon une organisation hiérarchique rappelant la présentation des fichiers et des dossiers dans le volet gauche de l'Explorateur Windows. En définissant la propriété ContextMenuStrip, vous pouvez fournir des opérations contextuelles à l'utilisateur lorsqu'il clique avec le bouton droit sur le contrôle TreeView. En associant un composant ContextMenuStrip aux éléments TreeNode individuels, vous pouvez ajouter un niveau personnalisé de fonctionnalités de menu contextuel à vos contrôles TreeView.

Pour associer par programme un menu contextuel à un TreeNode

  1. Instanciez un contrôle TreeView avec les paramètres de propriété appropriés, créez un TreeNode racine, puis ajoutez des sous-nœuds.

  2. Instanciez un composant ContextMenuStrip, puis ajoutez un ToolStripMenuItem pour chaque opération à rendre disponible au moment de l'exécution.

  3. Définissez la propriété ContextMenuStrip du TreeNode approprié en fonction du menu contextuel que vous créez.

  4. Lorsque cette propriété est définie, le menu contextuel s'affiche quand vous cliquez avec le bouton droit sur le nœud.

L'exemple de code suivant crée un TreeView de base et un ContextMenuStrip associés au TreeNode racine de TreeView. Vous devrez personnaliser les options de menu en fonction de TreeView que vous développez. Vous devez également écrire le code permettant de gérer les événements Click pour ces options de menu.

' 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


// 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:
    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);
    }

Voir aussi

Référence

ContextMenuStrip

Autres ressources

TreeView, contrôle (Windows Forms)