Добавление пункта меню в VS Extension через DTE не срабатывает Обработчик кликов - PullRequest
0 голосов
/ 25 мая 2011

Я пытаюсь динамически заполнить меню решения правой кнопкой мыши пунктами меню VS Package (расширение).

У меня есть меню расширений с именем «MyMenuName», и я добавляю туда пункты меню.

Вот код, который я использую:

        DTE2 dte = GetService(typeof (DTE)) as DTE2;

        CommandBars cmdBars = dte.CommandBars as CommandBars;

        CommandBar owner = cmdBars["MyMenuName"];

        CommandBarControl ctl1 = owner.Controls.Add(
            MsoControlType.msoControlButton, 1, string.Empty, 1, true);
        ctl1.Caption = "caption";
        ctl1.Enabled = true;

        //register on the Click event of the
        //button menu item
        CommandBarEvents buttonMenuItemHandler = (CommandBarEvents)dte.DTE.Events.CommandBarEvents[ctl1];

        buttonMenuItemHandler.Click += buttonMenuItemHandler_Click;

Элемент меню успешно добавлен, но обработчик щелчка не выполняется. Есть идеи?

Редактировать: я выкопал некоторый код здесь: https://netrepo.svn.codeplex.com/svn/trunk/AssemblyFactoryAddin/AssemblyFactoryAddin/GUIButton.cs И кажется, что мой код должен быть правильным (при условии, что их код работает)

1 Ответ

3 голосов
/ 25 мая 2011

Вместо того, чтобы работать с CommandBarControl, используйте CommandBarButton. E.g.:

var button = (CommandBarButton)owner.Controls.Add(MsoControlType.msoControlButton);
button.Caption = "caption";
button.Enabled = true;
button.Click += OnButtonClick;`

Это решит проблему.

...