locked
VB.NET 動態新增控制項的問題 RRS feed

  • 問題

  • 以下是程式碼
     
    1 Public Class Form1  
    2     Public Shared nn As New WebBrowser  
    3  
    4     Private Sub Button1_Click(ByVal sender As System.ObjectByVal 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.ObjectByVal 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
    2009年10月31日 下午 11:30
  • 謝謝你的幫忙!!

    我測試後即使button2已經按下了,button3顯示empty了
    還是沒有辦法消除掉Webbrowser在網頁上記錄的session
    關閉再重開才能完全消去
    2009年11月1日 上午 02:45
  • 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
    2010年3月26日 上午 09:11