我可以在Visual Studio中打开一个新的浏览器窗口,并使用以下代码片段在其中打开一个url。最后一行将此窗口的标题设置为“newTitle”。但是,一旦窗口加载完毕,标题就会更新以反映URL的内容。我喜欢将事件处理程序附加到窗口或嵌入对象,但我不知道如何做到这一点。
var dte2 = Package.GetGlobalService(typeof(SDTE)) as DTE2;
var window = dte2.ItemOperations.Navigate(url, EnvDTE.vsNavigateOptions.vsNavigateOptionsNewWindow);
window.Caption = "newTitle";
我尝试了什么:
检查窗口内的对象是否为vsWindowKindWebBrowser
类型,并将该对象强制转换为WebBrowser
。但window.Object
无法投放到WebBrowser
; wb1
为空。
var wb1 = window.Object as System.Windows.Forms.WebBrowser;
wb1.DocumentCompleted += (o, e) => { window.Caption = "newTitle"; };
使用此处列出的方法:How to Get List of Open Web Pages in Visual Studio Using EnvDTE。 wb2
不是null
,但是内部的对象被处理掉了,因此也毫无用处。
var wb2 = new VisualStudioWebBrowser(window.Object);
wb2.DocumentCompleted += (o, e) => { window.Caption = "newTitle"; };
在MSDN上询问此问题,请参阅here,但没有有用的答案。
问题:如何将事件处理程序附加到EnvDTE.Window
,以便我可以侦听页面加载完成的事件?