WithEvents and Handles clause calls for variety us to declare the item variable along with the occasion handler as we generate our code, so linkage is established upon compilation. Conversely, with AddHandler and RemoveHandler, linkage is established and taken off at runtime, that's more flexible.
Enable’s think that we want to load several MDI baby varieties, permitting Every single of these to get loaded only once, and of course to learn when among the list of baby types is closed. Considering that We've a number of types to load we would like to use the AddHandler and RemoveHandler keywords so we can be adaptable and generate the small code we can easily.
Permit’s get filthy.
1. In Every single MDI kid form we should declare a community celebration.
Community Occasion FormClosed(ByVal file As Form)
two. In Each individual MDI kid 먹튀검증 form we must use the Form_Closed technique which handles the MyBase.Shut course and raise the FormClosed function.
Non-public Sub Form1_Closed(ByVal sender As Item, ByVal e As Procedure.EventArgs) _
3. On our MDI variety we must declare two member variables. The initial’s of form Type and the 2nd’s type is ArrayList.
Non-public m_f(0) as Form
Personal m_sLoadedChildForms As New ArrayList
4. We need to put into practice a method the will look for the MDI baby types that are loaded. We’ll also use this method whenever we unload the MDI boy or girl types.
Personal Operate SearchChildForm(ByVal strSearchForm As String, _Optional ByVal idxEventHandler As Lengthy = -1) As Very long
Dim i As Very long = 0
For i = 0 To m_sLoadedForms.Depend – one
If m_sLoadedForms.Item(i) = strSearchForm Then
Dim j As Long = 0
For j = m_f.GetLowerBound(0) To m_f.GetUpperBound(0)
If m_f(j).Identify = strSearchForm Then idxEventHandler = j
5. We need to put into action a way to load the mdi baby types and make use of the SearchChildForm process if you want to not load the same mdi youngster variety 2nd time.
Non-public Sub LoadChildForms(ByVal f As Sort)
If m_f.GetUpperBound(0) > 0 Then
ReDim Preserve m_f(m_f.GetUpperBound(0) one)
m_f(m_f.GetUpperBound(0)) = f I
f 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)).Closed, _
ReDim Preserve m_f(m_f.GetUpperBound(0) – 1)
6. Eventually we have to https://en.search.wordpress.com/?src=organic&q=토토사이트 employ a technique to just take out our mdi child kind through the array record so we can easily load it once more if we wish.
Private Sub UnloadForm(ByVal sender As Procedure.Object, ByVal e As Process.EventArgs)
Dim i As Long
Dim s As String = sender.GetType().Title
Dim IndexForEventHandler = -one
i = SearchChildForm(s, IndexForEventHandler)
If i >= 0 Then m_sLoadedForms.RemoveAt(i)
If IndexForEventHandler >= 0 Then
RemoveHandler m_f(IndexForEventHandler).Closed, AddressOf UnloadForm
m_f(IndexForEventHandler) = Practically nothing