从Visual Studio加载项调用时,ToolWindow(的WebBroswer组件)无法导航URL

时间:2013-11-14 19:56:58

标签: c# visual-studio-2012 user-controls webbrowser-control visual-studio-addins

我有一个带ToolWindow(TW)的加载项。 ToolWindow是一个WindowFormControlLibrary(UC)。 在UserControl上有一个WebBrowser控件(WB)

加载AddIn时,它会初始化ToolWindow,这意味着会调用UserControl的InitializeComponent()事件。我可以调用另一个事件doNavigate()。它导航到URL。并在WebBrowser控件中显示它。

但是,在加载项的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).

有人可以帮助我,原因可能是什么?

非常感谢。

1 个答案:

答案 0 :(得分: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"!

...设置为'false'。

我将其更改为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;
}