What's 올바른 방법을 동적으로 메뉴를 선택 항목에 대한 컨텍스트 메뉴에서 WinForms?

StackOverflow https://stackoverflow.com/questions/103514

  •  01-07-2019
  •  | 
  •  

문제

내가 만들려고 노력하는 컨텍스트 메뉴를 제어하는"연결"을 주 메뉴 항목을 선택합니다.가 있는 두 개의 고정 메뉴 항목은 항상 거기에 임의의 번호를 추가 메뉴 항목해야 할 수도 있습니다.

해봤 문제를 해결을 유지하여 클래스 수준을 참조하여 고정 메뉴 항목 목록과 동적인 메뉴는 항목입니다.내가 처리하는 메뉴' Opening 이벤트를 해제하여 현재의 목록 항목을 추가한 다음 해당 항목하는 메뉴입니다.이 잘 작동을 위한 메인 메뉴하지만,컨텍스트 메뉴가 이상하게 동작합.

중요한 문제는 것 같으로 시간 Opening 가 발생하며,메뉴에는 이미 결정되는 항목을 표시합니다.이 양식을 보여 줍니다:

using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public class DemoForm : Form
    {
        private List _items;

        public DemoForm()
        {
            var contextMenu = new ContextMenuStrip();
            contextMenu.Opening += contextMenu_Opening;

            _items = new List();
            _items.Add(new ToolStripMenuItem("item 1"));
            _items.Add(new ToolStripMenuItem("item 2"));


            this.ContextMenuStrip = contextMenu;
        }

        void contextMenu_Opening(object sender, CancelEventArgs e)
        {
            var menu = sender as ContextMenuStrip;

            if (menu != null)
            {
                foreach (var item in _items)
                {
                    menu.Items.Add(item);
                }
            }
        }
    }
}

마우스 오른쪽 단추로 클릭하면 형태로 첫 번째 시간,아무것도 표시되지 않습니다.두 번째 메뉴가 표시됩니다.이 있는 이벤트가 발생할 수 있는 업데이트 항목은?그것은 나쁜 연습을 동적으로 메뉴 항목을 선택?

(참고:이것은 예를 들어 내가 만들기 시작했는 누군가를 원하는 이러한 기능 및 내가에 대한 호기심이 그것이 얼마나 어려운,그래서 그을 제공할 수 없는 이유에 대한 자세한 내용은 이것을 할 수 있습니다.이 사람이고 싶은"링크를"주 메뉴 항목의 컨텍스트 메뉴,그리고 그 이후 메뉴 항목의 아이 메뉴 하나 이 듯 합리적인 방법으로 그렇게했다.어떤 대안을 제안한 방법을 환영합니다.)

도움이 되었습니까?

해결책

작업할 수 있는 항목 중 MouseDown 이벤트의 제어합니다.는지 확인 그것은 오른쪽 마우스 버튼을 너무입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top