提問者
VB.NET 動態新增控制項的問題

問題
-
以下是程式碼
1 Public Class Form1 2 Public Shared nn As New WebBrowser 3 4 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 5 nn = New WebBrowser 6 Me.Controls.Add(nn) 7 nn.Navigate("http://??") 8 nn.Width = Me.Width 9 nn.Height = Me.Height 10 End Sub 11 12 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 13 nn.Dispose() 14 Me.Controls.Remove(nn) 15 End Sub 16 End Class
我使用後發現dispose根本沒有辦法真正的移除(我是想要用動態新增與移除webbrowser,並讓自己設定的webbrowser事件可以控制自己動態增加的webbrowser)
可以說只是隱藏起來而已
不知道怎樣才能真正的做到動態的新增與移除控制項?
是我沒有釋放記憶體??
還是Garbage Collection?
謝謝!!2009年10月31日 下午 12:26
所有回覆
-
Miles_LinYu你好 或者你可以 試試加入以下CODE nn = Nothing 去 Clear 這個INSTANCE. 以下是我用來測試的CODE Public nn As WebBrowser Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click nn = New WebBrowser Me.Controls.Add(nn) nn.Navigate("http://www.yahoo.com") nn.Width = Me.Width - 50 nn.Height = Me.Height - 50 End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click nn.Dispose() Me.Controls.Remove(nn) nn = Nothing '<---- clear instance If Me.Controls("nn") IsNot Nothing Then MsgBox("Still here") Else MsgBox("Gone") End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click If nn Is Nothing Then MsgBox("empty") Else MsgBox("Still here") End If End Sub Please forgive me if I mis-understood your questions.
Chi- 已提議為解答 Ken Lin, MSMVP for .NET (2003-2017), rMVP 2010年3月26日 上午 09:11
2009年10月31日 下午 11:30 -
You can try Session.Abandon
http://msdn.microsoft.com/en-us/library/ms524310.aspx
大家一齊探討、學習和研究,謝謝! Microsoft MVP, Microsoft Community Star(TW & HK), MCT, MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP- 已提議為解答 Ken Lin, MSMVP for .NET (2003-2017), rMVP 2010年3月26日 上午 09:11
2010年3月26日 上午 09:11