2008-10-22 5 views
9

5 초마다 재생성되는 문자열 목록이 있습니다. 컨텍스트 메뉴를 만들고이 목록을 사용하여 항목을 동적으로 설정하려고합니다. 문제는 내가 어떻게하는지에 대한 단서도없고 생성 된 모든 항목 (다른 매개 변수 인 DoSomething ("item_name")을 사용하는 같은 방법을 사용해야 함)에 대해 클릭 동작을 관리하는 방법을 알지 못한다는 것입니다.동적으로 컨텍스트 메뉴에 항목 추가 및 설정 클릭 동작

어떻게해야합니까?

감사합니다. 감사합니다. 당신은 호출하여 항목을 추가 할 수 있습니다

myContextMenuStrip.Items.Clear(); 

:

답변

19

그래서, 당신과 함께 상황에 맞는 메뉴에서 항목을 삭제할 수 있습니다

myContextMenuStrip.Items.Add(myString); 

컨텍스트 메뉴는 ItemClicked 이벤트가 있습니다. 귀하의 처리기는 이렇게 보일 수 있습니다 :

private void myContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e) 
{ 
    DoSomething(e.ClickedItem.Text); 
} 

나를 위해 잘 작동하는 것 같습니다. 당신의 질문을 오해 한 경우 알려주십시오.

+0

감사! 그게 내가 찾고 있던거야 –

+0

글쎄,이 문자열을 추가 ... 어떻게 한 MenuItem 추가에 대한 갈 것이라고? 그건 바인딩 이벤트 처리기 쉽게 –

1

ToolStripMenuItem 개체를 사용하는 또 다른 방법 : 당신의 myContextMenuStripItemClicked 이벤트 내부

//////////// Create a new "ToolStripMenuItem" object: 
ToolStripMenuItem newMenuItem= new ToolStripMenuItem(); 

//////////// Set a name, for identification purposes: 
newMenuItem.Name = "nameOfMenuItem"; 

//////////// Sets the text that will appear in the new context menu option: 
newMenuItem.Text = "This is another option!"; 

//////////// Add this new item to your context menu: 
myContextMenuStrip.Items.Add(newMenuItem); 


을, 당신은 선택되어있는 옵션을 확인할 수 있습니다 (메뉴 항목의 이름 속성을 기반으로 )

private void myContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e) 
{ 
    ToolStripItem item = e.ClickedItem; 

    //////////// This will show "nameOfMenuItem": 
    MessageBox.Show(item.Name, "And the clicked option is..."); 
} 
관련 문제