如何将事件处理程序附加到EnvDTE.Window

时间:2017-08-15 14:53:51

标签: c# visual-studio vsix

我可以在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";

我尝试了什么:

  1. 检查窗口内的对象是否为vsWindowKindWebBrowser类型,并将该对象强制转换为WebBrowser。但window.Object无法投放到WebBrowser; wb1为空。

    var wb1 = window.Object as System.Windows.Forms.WebBrowser;
    wb1.DocumentCompleted += (o, e) => { window.Caption = "newTitle"; };
    
  2. 使用此处列出的方法:How to Get List of Open Web Pages in Visual Studio Using EnvDTEwb2不是null,但是内部的对象被处理掉了,因此也毫无用处。

    var wb2 = new VisualStudioWebBrowser(window.Object);
    wb2.DocumentCompleted += (o, e) => { window.Caption = "newTitle"; };
    
  3. 在MSDN上询问此问题,请参阅here,但没有有用的答案。

  4. 问题:如何将事件处理程序附加到EnvDTE.Window,以便我可以侦听页面加载完成的事件?

0 个答案:

没有答案