CommandBars.FindControl вызывает исключение - PullRequest
0 голосов
/ 29 декабря 2008

Я пытаюсь использовать метод FindControl объекта CommandBars в надстройке Word VSTO для получения что еще объекта панели команд Код выглядит следующим образом

 private void WireContextMenu(string MenuID,string Tag, string ID, ref Office.CommandBarButton Control)
    {
        try
        {
            object missing = System.Type.Missing;

            Control = (Office.CommandBarButton)this.Application.CommandBars[MenuID].FindControl((object)Office.MsoControlType.msoControlButton, ID, Tag, missing, missing);
            if (Control == null)
            {
                Control = (Office.CommandBarButton)this.Application.CommandBars[MenuID].Controls.Add(Office.MsoControlType.msoControlButton, ID, missing, missing, missing);
                Control.Caption = "Biolit Markup Selection";
                Control.Tag = Tag;
            }

            Control.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(this.cb_Click);
        }
        catch (Exception Ex)
        {
        }
    }

Метод FindControl вызывает исключение несоответствия типов (-2147352571) Есть идеи В любом случае это правильный способ добавить элемент в контекстное меню слова, а затем убедиться, что вы не добавили его, если он уже существует? Спасибо

1 Ответ

1 голос
/ 15 мая 2009

вы используете Missing, где Missing не разрешен в качестве параметра ссылка: текст ссылки http://msdn.microsoft.com/en-us/library/system.type.missing.aspx

используйте такой код:

        object type = MsoControlType.msoControlPopup;
        object id = 1;
        object tag = null;
        object visible = 1;
        object recusive = false;
        //object missing = System.Type.Missing;

        CommandBarControl barControl = popParent.FindControl(type, id, tag, visible, recusive);
...