2009-09-30 4 views
1

내 C# 코드에서 treeView의 개별 노드에 오른쪽 클릭 기능을 추가하고 있습니다. 사용자가 트리의 해당 노드에서 마우스 오른쪽 버튼을 클릭하면 "추가", "삭제", "이름 바꾸기"와 같은 옵션이 팝업됩니다. 이제 클릭 한 노드에 따라 다음과 같은 statememnts를 사용하여 메뉴를 채 웁니다.contextmenustrip 항목에 대한 이벤트 처리기

contextMenuStrip1.Items.Add ("Add"); ("이름 바꾸기")

contextMenuStrip1.Items.Add; : 다른 노드를 잘 클릭하면

은 그 때 나는 다음을 사용

두 항목이 모두 표시되어야하는 노드가 있습니다. contextMenuStrip1.Items.Add ("Add"); contextMenuStrip1.Items.Add ("Delete");

둘 다 컨텍스트 menustrip에 존재할 때 Add 및 Delete에 대한 별도의 이벤트 처리기를 작성하려면 어떻게합니까? "추가"또는 "삭제"를 클릭했는지 여부를 구분할 수 없습니다. 현재 ContextMenuStrip에서 "ItemClicked"이벤트를 사용하여 "Add"에 대한 이벤트 처리기에서 코드 조각을 실행하지만 "Delete"를 클릭하면이 evemt가 발생합니다. 어떤 도움을 주시면 감사하겠습니다.

감사합니다, Viren

답변

1

ToolStripItem.Add (문자열 텍스트) 메서드는 추가 된 ToolStripItem을 반환합니다. 그런 식으로 참조해야합니다. ItemClicked 이벤트가 발생하면 어떤 이벤트가 클릭되었는지 확인할 수 있습니다.

E.x :

using System; 
      using System.Windows.Forms; 
      namespace WindowsFormsApplication6 
      { 
static class Program 
{ 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     using (Form form = new Form()) 
     { 
      form.ContextMenuStrip = new ContextMenuStrip(); 
      ToolStripItem addMenuItem = form.ContextMenuStrip.Items.Add("Add"); 
      ToolStripItem deleteMenuItem = form.ContextMenuStrip.Items.Add("Delete"); 

      form.ContextMenuStrip.ItemClicked += (sender, e) => 
      { 
       if (e.ClickedItem == addMenuItem) 
       { 
        MessageBox.Show("Add Menu Item Clicked."); 
       } 
       if (e.ClickedItem == deleteMenuItem) 
       { 
        MessageBox.Show("Delete Menu Item Clicked."); 
       } 
      }; 
      Application.Run(form); 
     } 
    } 
} 

}

0

당신은은 ContextMenuItem에 보낸 개체를 캐스팅하고 그것의 이름 속성을 확인할 수 있습니다 :

Private Sub ContextItem_Clicker(Byval sender As Object, Byval e As EventArgs) 
    Dim castedItem As ContextMenuItem = TryCast(sender, ContextMenuItem) 
    If castedItem IsNot Nothing Then 
     If castedItem.Name = "whatever" Then 
      ' Do something remotely useful here 
     End If 
    End If 
End Sub 

을 또는 당신은 다른 ContextItems에 대해 다른 이벤트 핸들러를 추가합니다.