Hello and thanks for looking.

The background:

*I have a TableGridLayout (6 x 6) which host 36 buttons created at design time.
*From the 36 buttons, only a handfull maybe needed at anyone time depending on data retrieved from an SQL database.
* Everytime I need to 'clear' the grid to populate with new items, I clear the text of each button, make it visable if required and then upadate with the new text.
*On every pass if a button becomes active, I add an event handler to the button like this.

e.g.

Code:
   For Each Control In GrdTableLayoutPanel.Controls
      Control.text = **Button Name from DB**
      AddHandler Control.Click, AddressOf PopulateProducts
      Control.Enabled = True
   Next
The problem:

As the same 36 buttons are being used for different event handlers e.g. button1 used for getting products so has PopulateProducts sub but it can also be used to populate services so at some point I may be calling

Code:
AddHandler Control.Click, AddressOf Services
Now this is fine the first few times the button is clicked but after a while you can see that any old handles attached to the button click are also fired.

So my question is how to remove all previous dynamically created event handlers?
I've done quite a bit of reading but I still have not been able to make it work.

I've tried calling for RemoveHandler in my Clear sub but the old events are still fired?

Code:
RemoveHandler Control.Click, PopulateProducts
RemoveHandler Control.Click, Services
Also the reason I start of with all 36 buttons created is because I tried creating the buttons as and when needed but the overhead was to much and performance was severly affected.

Any help would be appreciated or a better way of approaching this problem.

Thanks