处理SHDocVw Window.closing事件以关闭C#中的表单

时间:2012-09-06 09:08:53

标签: c# .net shdocvw

经过大量的挖掘,我已经设法用SHDocVw.dll在我的2个表单之间共享会话。我有一个Main窗体和一个Popup窗体,每个窗体都包含一个WebBrowser控件。

我的问题是:如何处理window.close javascript事件以关闭弹出窗体?

我认为我的语法正确,但我无法实现。

主表格(webbrowser Navigator):

    SHDocVw.WebBrowser nativeBrowser;
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        nativeBrowser = (SHDocVw.WebBrowser)Navigator.ActiveXInstance;
        nativeBrowser.NewWindow2 += nativeBrowser_NewWindow2;
    }

    protected override void OnFormClosing(FormClosingEventArgs e)
    {
        nativeBrowser.NewWindow2 -= nativeBrowser_NewWindow2;
        base.OnFormClosing(e);
    }

    void nativeBrowser_NewWindow2(ref object ppDisp, ref bool Cancel)
    {
        var popup = new Form3();
        popup.Show(this);
        ppDisp = popup.webBrowser1.ActiveXInstance;
    }

弹出表格

public Form3()
    {
        InitializeComponent();         
    }

    public WebBrowser Browser
    {
        get { return webBrowser1; }
    }

我想我必须在弹出代码中添加类似的内容:

SHDocVw.WebBrowser nativeBrowser;

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    nativeBrowser = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;
    nativeBrowser.WindowClosing += nativeBrowser_closing;
}

protected void nativeBrowser_closing(bool IsChildWindow, ref bool Cancel)
{
    this.Close();
}

但是当我声明SHDocVw.WebBrowser nativeBrowser时,它会打开一个新的IE实例,而不是绑定到当前的实例。

有人可以帮帮我:)?

0 个答案:

没有答案