.: VB.Net: Dynamic Usage Of Eventhandlers

By:Thomas Kaloyani

Category:Home / Computers / Software

WithEvents and Handles clause requires form us to declare the object variable and the event handler as we write our code, so linkage is created upon compilation. On the other hand, with AddHandler and RemoveHandler, linkage is created and removed at runtime, which is more flexible.



Let's assume that we want to load several MDI child forms, allowing each of them to be loaded only once, and of course to know when one of the child forms is closed. Since we have several forms to load we would like to use the AddHandler and RemoveHandler keywords so we can be flexible and write the minimal code we can.



Let's get dirty.



1. In each MDI child form we have to declare a public event.

Public Event FormClosed(ByVal f As Form)



2. In each MDI child form we have to use the Form_Closed method which handles the MyBase.Closed class and raise the FormClosed event.



Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) _

Handles MyBase.Closed

RaiseEvent FormClosed(Me)

End Sub



3. On our MDI form we need to declare two member variables. The first's of type Form and the second's type is ArrayList.

Private m_f(0) as Form

Private m_sLoadedChildForms As New ArrayList



4. We need to implement a method the will search the MDI child forms that are loaded. We'll also use this method when we unload the MDI child forms.



Private Function SearchChildForm(ByVal strSearchForm As String, _Optional ByVal idxEventHandler As Long = -1) As Long

Dim i As Long = 0

For i = 0 To m_sLoadedForms.Count - 1

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).Name = strSearchForm Then idxEventHandler = j

Next j

Return i

End If

Next

Return -1

End Function



5. We need to implement a method to load the mdi child forms and use the SearchChildForm method in order 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 Preserve m_f(m_f.GetUpperBound(0) + 1)

End If

m_f(m_f.GetUpperBound(0)) = f I

f Not SearchChildForm(m_f(m_f.GetUpperBound(0)).Name()) >= 0 Then

m_f(m_f.GetUpperBound(0)).MdiParent = Me

AddHandler m_f(m_f.GetUpperBound(0)).Closed, _

AddressOf UnloadChildForm

m_f(m_f.GetUpperBound(0)).Show()

m_sLoadedChildForms.Add(m_f(m_f.GetUpperBound(0)).Name)

Else

If m_f.GetUpperBound(0) > 0 Then

ReDim Preserve m_f(m_f.GetUpperBound(0) - 1)

End If

End If

End Sub



6. At last we need to implement a method to take out our mdi child form from the array list so we can load it again if we want.



Private Sub UnloadForm(ByVal sender As System.Object, ByVal e As System.EventArgs)

Dim i As Long

Dim s As String = sender.GetType().Name

Dim IndexForEventHandler = -1

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) = Nothing

End If

End Sub

Digg del.icio.us Blink Stumble Spurl Reddit Netscape Furl

Article keywords: vb, .net, vb.net, visual basic, basic, software, programming, development, computer, IT, developer, event

Article Source: http://www.articles32.com

Thomas is an experienced Visual Basic developer, with expertise of 7+ years developing financial applications. His main IT skills are VB, SQL, Crystal Reports - should you need a VB developer for your projects feel free to contact Thomas through his personal website at www.Kaloyani.com or through www.VBprofs.com







.: New Software Articles

1). What Your Spouse Might Not Want You To Know
Is your spouse or significant other extremely secretive about their computer habits?

2). Why Buy Anti Spyware Software When I Can Download it Free?
Many Spyware software packages are being sold on the Internet. Many other packages are listed for free. Why should you pay for something that might be free?

3). Free Spyware Adware Remover
Computers need routine maintenance as well as systems checks in order to be in good condition at all times. This can be done by getting the proper software or sending the unit to the shop.

4). Getting Free Internet Security for Your Computer
Surfing the Internet nowadays can be very dangerous. With all the viruses, spywares, adwares, identity thieves and hackers circulating for surfers to victimize, opening and downloading an attachment sent by your friend can be very scary.

5). What Are Your Children Doing Online?
In the Internet age, our children use the computer as much as or maybe more than their parents do. Kids use the Internet to do homework, play video games, converse with their friends and more.

6). Safe Guard Your Critial Business Documents
All types of commercial places, whether in the private, public or the government sector are now increasingly using computers for various possible functions.

7). How Folder Hider Software Works
Nowadays, a computer is being increasingly used in all types of settings, whether it is an office, a corporate house or domestic settings.


.: Top Software Articles

1). Track Your MySpace Profile Visitors
I know that everyone who is on MySpace has had the same burning questions that I’ve had. How can I see who has viewed my MySpace profile? Where can I find a MySpace Tracker? Since MySpace has become so popular, so have the MySpace profile stalkers. Could be your friends, neighbors, ex-boyfriends or ex-girlfriends, or even someone you don’t even know.

2). Discover Mozzila FireFox Browser -and How to Install Extensions
Discover Mozilla FireFox Extra Features – Extensions and How To Install Them If you are still not using any other web browser then FireFox (no matter what OS you are using) you are endangering the security of your computer and missing out on a much richer surfing experience. One of Mozilla FireFox browser most powerful feature is the possibility to install extensions.

3). PsP Software Downloads – Review for PsP Blender
PsP software downloads is a very good way to get new software for your psp hand held. You can get psp movies from many different websites. Most of these sites include psp music downloads, psp movie downloads and psp software downloads and of course PsP Games. Many of the databases are different from one site to another. Some sites offer a wide variety of different choices.

4). Tutorial - Enabling IIS 5.1 on Windows XP Pro
Windows XP Home Edition does not support IIS 1. You may need to put your Windows XP Pro CD into the PC. 2. Go to Control Panel, ‘Add Remove Programs’, then ‘Add/Remove Windows Components’. In the Windows Components window, place a check mark beside ‘Internet Information Services (IIS)’, then click next, then click finish. 3. During installation, Windows creates a directory at C:inetpubwwwroot and places a few files there.

5). PsP Software – Review of Software Download Sites
PsP handhelds are one of the newest and most fun ways to play games, watch movies and listen to music. PsP software downloads are just some things that you can do to improve your psp. PsP software downloads are fun and easy. There are many places on the net were one can find psp software downloads. Some sites have you pay per download and sometimes charge up to a couple dollars for each download.

6). What To Do When Windows Fail To Boot
Copyright 2006 Otis Cooper When Windows fails to boot it is normally caused by you installing a program or device and it has caused a conflict with one or more other programs. This will no doubt give you plenty of heartaches if you're not certain which program caused Windows to not boot up. If you recently installed a program or application and know where it was installed,you may be in much better shape as for as correcting the error.

7). SQL Server 2000 Data Types
SQL Server requires that each variable and column in a table should be defined with respect to the type of data it will store. From a bit to a huge image and binary storage types, the allocation is supposed to help the user conform to the data required, and help the engine allocate space and processing speed efficiently. Built-in data types SQL.


Page loaded in 0.168 seconds.