2011-01-27 2 views
2

.NET 및 Windows Forms 사용 :C# : MenuItem 전체 ContextMenu 하위 메뉴로 추가하는 방법

MenuItem에 전체 ContextMenu을 추가하는 가장 일반적인 방법은 무엇입니까?

의미 :

private void AddSubMenu(MenuItem item, ContextMenu menu) 
{ 
    // I want to add the full menu to the menu item as a submenu 

    // I could iterate the items of the menu and add them to the item 
    // but I guess that there is a smarter way to do this 
} 

미리 감사드립니다.

답변

4

사실, 그건 정말 간단합니다 : 분명히

private void AddSubMenu(MenuItem item, ContextMenu contextMenu) 
{ 
    item.MergeMenu(contextMenu); 
} 

및 병합 이전에 등록 된 모든 이벤트 핸들러는 여전히 작동하고 모두 메뉴에 의해 트리거됩니다.

+0

그것을 하위 메뉴로 추가하는 대신 메뉴에 컨텍스트 메뉴를 추가한다고 생각하십시오. –

+0

아니요, 모든 'ContextMenu' 항목을'MenuItem' 아래에 추가합니다. 나는 그것을 시험했다. – digEmAll

+0

완벽하게 작동합니다. 감사! –

0

그럼 나는 전략을 반복하는 것이 훨씬 똑똑한 방법을 찾지 못했습니다. 그러나 당신은 AddRange 기능에 맡길 수 있습니다. 그래서 당신의 코드가됩니다.

private void AddSubMenu(MenuItem item, ContextMenu menu) 
{ 
    item.MenuItems.AddRange(menu.MenuItems); 
} 

메뉴 아이템은 MenuItemCollection 및 Addrange 그렇게 모두 만족 등의 컬렉션을 취하고 반환하고 우리는 반복의 물건을에서 저장한다.

+0

이것은 컴파일되지 않습니다. .NET 1.4를 사용하고 있습니다. 저는 구석기 시대에 살고 있습니다. ;-). ManuItemCollection을 배열로 변환 할 수없는 것 같습니다.'(1497) : Argument '1': 'System.Windows.Forms.MenuItemCollection'에서 'System.Windows.Forms.MenuItem []'으로 변환 할 수 없습니다. –

관련 문제