방법: TreeView 노드에 바로 가기 메뉴 연결
Windows Forms TreeView 컨트롤은 Windows 탐색기의 왼쪽 창에 파일과 폴더가 표시되는 방식과 비슷한 방식으로 노드의 계층 구조를 표시하는 데 사용됩니다. ContextMenuStrip 속성을 설정하면 사용자가 TreeView 컨트롤을 마우스 오른쪽 단추로 클릭할 경우 상황에 맞는 작업을 제공할 수 있습니다. ContextMenuStrip 구성 요소를 개별 TreeNode 항목과 연결하면 TreeView 컨트롤에 사용자 지정된 수준의 바로 가기 메뉴 기능을 추가할 수 있습니다.
바로 가기 메뉴를 TreeNode와 프로그래밍 방식으로 연결하려면
적절한 속성 설정을 사용하여 TreeView 컨트롤을 인스턴스화하고 루트 TreeNode를 만든 다음 하위 노드를 추가합니다.
ContextMenuStrip 구성 요소를 인스턴스화한 다음, 런타임에 사용할 수 있도록 할 각 작업에 대한 ToolStripMenuItem을 추가합니다.
적절한 TreeNode의 ContextMenuStrip 속성을 해당 바로 가기 메뉴로 설정합니다.
이 속성이 설정되어 있을 때 노드를 마우스 오른쪽 단추로 클릭하면 바로 가기 메뉴가 표시됩니다.
다음 코드 예제에서는 TreeView의 루트 TreeNode와 연결된 기본 TreeView 및 ContextMenuStrip을 만듭니다. 개발 중인 TreeView에 맞게 메뉴 선택을 사용자 지정해야 합니다. 또한 해당 메뉴 항목에 대한 Click 이벤트를 처리하는 코드를 작성할 수 있습니다.
' 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);
}