我有一个带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).
有人可以帮助我,原因可能是什么?
非常感谢。
答案 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;
}