WithEvents and Handles clause calls for sort us to declare the object variable along with the function handler as we generate our code, so linkage is made upon compilation. On the flip side, with AddHandler and RemoveHandler, linkage is designed and removed at runtime, that's extra versatile.
Permit’s suppose that we want to load several MDI kid sorts, enabling Just about every of these for being loaded only once, not to mention to learn when one of the child forms is closed. Because Now we have several forms to load we would like to use the AddHandler and RemoveHandler search phrases so we are able to be flexible and generate the small code we are able to.
Enable’s get dirty.
one. In Every MDI baby form we really need to declare a general public function.
Public Occasion FormClosed(ByVal f As Sort)
2. In Every single MDI child sort we must utilize the Form_Closed method which handles the MyBase.Shut class and lift the FormClosed celebration.
Non-public Sub Form1_Closed(ByVal sender As Item, ByVal e As Method.EventArgs) _
Handles MyBase.Shut
RaiseEvent FormClosed(Me)
Close Sub
three. On our MDI variety we must declare two member variables. The primary’s of sort Sort and the second’s form is ArrayList.
Personal m_f(0) as Sort
Non-public m_sLoadedChildForms As New ArrayList
four. We need to 먹튀사이트 carry out a method the will research the MDI baby types which are loaded. We’ll also use this process whenever we unload the MDI little one sorts.
Private Purpose SearchChildForm(ByVal strSearchForm As String, _Optional ByVal idxEventHandler As Prolonged = -one) As Lengthy
Dim i As Long = 0
For i = 0 To m_sLoadedForms.Rely – 1
If m_sLoadedForms.Product(i) = strSearchForm Then
Dim j As Extensive = 0
For j = m_f.GetLowerBound(0) To m_f.GetUpperBound(0)
If m_f(j).Identify = strSearchForm Then idxEventHandler = j
Upcoming j
Return i
Finish If
Subsequent
Return -one
Stop Perform
5. We have to apply a way to load the mdi boy or girl kinds and make use of the SearchChildForm technique if you want not to load the same mdi child form second time.
Private Sub LoadChildForms(ByVal f As Form)
If m_f.GetUpperBound(0) > 0 Then
ReDim Maintain m_f(m_f.GetUpperBound(0) one)
m_f(m_f.GetUpperBound(0)) = file I
file Not SearchChildForm(m_f(m_f.GetUpperBound(0)).Identify()) >= 0 Then
m_f(m_f.GetUpperBound(0)).MdiParent = Me
AddHandler m_f(m_f.GetUpperBound(0)).Shut, _
AddressOf UnloadChildForm
m_f(m_f.GetUpperBound(0)).Clearly show()
m_sLoadedChildForms.Incorporate(m_f(m_f.GetUpperBound(0)).Name)
Else
ReDim Protect m_f(m_f.GetUpperBound(0) – 1)
6. Eventually we need to carry out a method to acquire out our mdi child form from your array checklist so we are able to load it again if we want.
Personal Sub UnloadForm(ByVal sender As Program.Object, ByVal e As Technique.EventArgs)
Dim i As Long
Dim s As String = sender.GetType().Identify
Dim http://edition.cnn.com/search/?text=먹튀노트 IndexForEventHandler = -one
i = SearchChildForm(s, IndexForEventHandler)
If i >= 0 Then m_sLoadedForms.RemoveAt(i)
If IndexForEventHandler >= 0 Then
RemoveHandler m_f(IndexForEventHandler).Shut, AddressOf UnloadForm
m_f(IndexForEventHandler) = Almost nothing