0

У меня есть надстройка с ToolWindow (TW). ToolWindow - это WindowFormControlLibrary (UC). В UserControl есть элемент управления WebBrowser (WB)Компонент ToolWindow ('s WebBroswer) не может перемещаться по URL-адресу при вызове из надстройки Visual Studio

Когда загружен AddIn, он инициализирует ToolWindow, что означает событие InitializeComponent() UserControl. Я могу вызвать другое событие doNavigate(). И он переходит к URL-адресу. и ПОКАЖИТЕ его в элементе управления WebBrowser.

Однако в событии Add-in's Exec, когда я пытаюсь вызвать событие doNavigate(). Он загружает или хотя бы что-то делает, однако он НЕ отображает страницу в элементе управления.

/*This file is UC.cs in WindowsFormControlLibrary Project */ 
    //Event is lanuched when the Add-in and tool window are loaded 
    public UC() 
    { 
     InitializeComponent(); 
     doNavigate("www.google.com"); 
    } 

    public void doNavigaet(string url) 
    { 
     WB.Navigate(url); 
     while (wBrowser.ReadyState != WebBrowserReadyState.Complete) 
     { 
      Application.DoEvents(); 
     } 
    } 

Это, как я называю doNavigate() событие из Exec случае надстроек

/*This file is Connect.cs in the Addins Project.*/ 
    public void Exec(string CmdName, vsCommandExecOption ExecuteOption, ref object VariantIn, ref object VariantOut, ref bool Handled) 
    { 
     UC uc = new UC(); 
     UC.doNavigate("www.bing.com");    

     Handled = true; 
     return; 
    } 

Там нет ошибок, только страница (Bing) не отображается в веб-браузере.

В окне вывода, я получаю: The thread '<No Name>' (0x502c) has exited with code 0 (0x0).

Может кто-нибудь, пожалуйста, помогите мне, что может быть причиной?

Большое спасибо.

+0

Итак, google.com отображается, но на сайте bing.com нет. – wafers

+0

Я положил кнопку на форму, когда я нажимаю кнопку и вызываю метод 'doNavigate()' с любым URL-адресом, который он работает, и страница отображается. Любая идея, что здесь не так? – wafers

+0

Вы создаете новый UC, который не отображается, вместо того, чтобы использовать тот, на который вы смотрите. –

ответ

0

ToolWindow создается как:

toolWin = toolWins.CreateToolWindow2(m_addIn, asmPath, ctlProgID, "MyToolWindow", guidStr, ref objTemp); 

Значение objTemp было null. И причина в том, что в проекте «WindowsFormControlLibrary», в файле AssemblyInfo.cs ...

[assembly: ComVisible(false)] //Make it visible, put "true"! 

... был установлен на «ложь».

После того как я изменил его на true, переменная objTemp теперь содержит UC как объект. В конце концов, метод Exec становится ...

public void Exec(string CmdName, vsCommandExecOption ExecuteOption, ref object VariantIn, ref object VariantOut, ref bool Handled) 
{ 
    UC uc = (UC)objTemp; //Casting object as UC 
    uc.doNavigate("www.bing.com");    

    Handled = true; 
    return; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^