Vorgehensweise: Anfügen eines ShortCut-Menüs an einen TreeView-Knoten
Das Windows Forms TreeView-Steuerelement zeigt eine Hierarchie von Knoten an, ähnlich wie die Dateien und Ordner, die im linken Bereich von Windows Explorer angezeigt werden. Durch Festlegen der ContextMenuStrip-Eigenschaft können Sie dem Benutzer kontextbezogene Vorgänge bereitstellen, wenn er mit der rechten Maustaste auf das TreeView-Steuerelement klickt. Indem Sie eine ContextMenuStrip-Komponente einzelnen TreeNode-Elementen zuordnen, können Sie Ihren TreeView-Steuerelementen eine angepasste Ebene der Kontextmenüfunktionen hinzufügen.
So ordnen Sie ein Kontextmenü programmgesteuert einem TreeNode zu
Instanziieren Sie ein TreeView-Steuerelement mit den entsprechenden Eigenschafteneinstellungen, erstellen Sie ein Stamm-TreeNode, und fügen Sie dann Unterknoten hinzu.
Instanziieren Sie eine Komponente ContextMenuStrip, und fügen Sie dann für jeden Vorgang, den Sie zur Laufzeit zur Verfügung stellen möchten, eine ToolStripMenuItem hinzu.
Legen Sie die ContextMenuStrip-Eigenschaft des entsprechenden TreeNode auf das von Ihnen erstellte Kontextmenü fest.
Wenn diese Eigenschaft festgelegt ist, wird das Kontextmenü angezeigt, wenn Sie mit der rechten Maustaste auf den Knoten klicken.
Im folgenden Codebeispiel wird eine grundlegende TreeView erstellt und ContextMenuStrip dem Stamm-TreeNode der TreeViewzugeordnet. Sie müssen die Menüoptionen an die anpassen, die dem TreeView entsprechen, das Sie entwickeln. Zusätzlich sollten Sie Code programmieren, um die Ereignisse Click für diese Menüelemente zu behandeln.
// 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
Siehe auch
.NET Desktop feedback