日期:2014-05-17  浏览次数:20843 次

form和webbrowser的Dispose方法
我在MSDN里看到使用完webbrowser之后要调用dispose方法释放.但是我在窗体关闭的时候调用Dispose方法.会打开一个新的IE,IE的网址就是窗体关闭时webbrowser的网址.

        private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if (e.Url.AbsoluteUri.StartsWith(m_xxxxx.m_strRedirect_uri))
            {
                m_xxxxx.set(e.Url.AbsoluteUri);
                
                DialogResult = DialogResult.OK;
                Close();
            }
        }

        private void GrantForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            webBrowser.Dispose();
        }

MSDN上还说调用ShowDialog之后也需要调用dispose,刚好这个窗口里面有个webbrowser.调用dispose时一样会打开一个IE和上面情况一样.其实这就是上面webbrowser的窗体.

            GrantForm grantForm = new GrantForm();
            if (grantForm.ShowDialog() == DialogResult.OK)
            {
                threadClass.m_xxxxx = grantForm.m_xxxxx;
            }


请问怎么正确的释放webbrowser和ShowDialog的窗体

------解决方案--------------------
如果你是往窗体上拖webbrowser控件的话,不需要在Form类中做任何事情。
窗体设计器会生成把webbrowser控件加到Controls这个集合的代码。这个集合由Form负责在自己被Dispose的时候清理。MSDN上的代码是针对你自己创建webbrowser控件但是不加到Controls这个集合的情况的。