首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

form跟webbrowser的Dispose方法

2013-07-20 
form和webbrowser的Dispose方法我在MSDN里看到使用完webbrowser之后要调用dispose方法释放.但是我在窗体关

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这个集合的情况的。



但是不管用Show还是ShowDialog,一个Form都需要被Dispose掉。最简单的办法是加一个using,这样超出作用域的时候grantForm的窗口被自动销毁和Dispose。

using(GrantForm grantForm = new GrantForm())
{
      grantForm.ShowDialog();
      ......
}

热点排行