Gewusst wie: Anfügen eines Kontextmenüs an einen Strukturansichtsknoten

Aktualisiert: November 2007

Mit dem TreeView-Steuerelement in Windows Forms wird eine Hierarchie von Knoten angezeigt, ähnlich wie die Dateien und Ordner im linken Bereich des Windows Explorers. Durch Festlegen der ContextMenuStrip-Eigenschaft können Sie kontextbezogene Operationen für den Benutzer bereitstellen, wenn diese mit der rechten Maustaste auf das TreeView-Steuerelement klicken. Wenn Sie eine ContextMenuStrip-Komponente einzelnen TreeNode-Elementen zuordnen, können Sie den TreeView-Steuerelementen benutzerdefinierte Kontextmenüfunktionen hinzufügen.

So ordnen Sie ein Kontextmenü einem TreeNode programmgesteuert zu

  1. Instanziieren Sie ein TreeView-Steuerelement mit den entsprechenden Eigenschafteneinstellungen, erstellen Sie einen TreeNode-Stamm, und fügen Sie dann untergeordnete Knoten hinzu.

  2. Instanziieren Sie eine ContextMenuStrip-Komponente, und fügen Sie dann ein ToolStripMenuItem für jede Operation hinzu, die Sie zur Laufzeit verfügbar machen möchten.

  3. Legen Sie die ContextMenuStrip-Eigenschaft des entsprechenden TreeNode auf das Kontextmenü fest, das Sie erstellen.

  4. Wenn diese Eigenschaft festgelegt ist, wird das Kontextmenü angezeigt, wenn Sie mit der rechten Maustaste auf den Knoten klicken.

Im folgenden Codebeispiel werden eine grundlegende TreeView und ein ContextMenuStrip erstellt, die dem TreeNode-Stamm der TreeView zugeordnet sind. Sie müssen die Menüoptionen an die Optionen der von Ihnen entwickelten TreeView anpassen. Zusätzlich können Sie Code zum Behandeln der Click-Ereignisse für diese Menüelemente schreiben.

' 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);
    }

Siehe auch

Referenz

ContextMenuStrip

Weitere Ressourcen

TreeView-Steuerelement (Windows Forms)