Your Finalize event is where you clean up objects in your class, but if your class derives from another, that line Invokes the Finalize method in *that* class as well, so it has a chance to clean up properly at the same time.
I would suggest setting all references to the assembly equal to Nothing, then calling GC.Collect to force the Garbage Collector to clean up.
Let me know how you get on, I'll be needing to do something similar shortly.
It's likely that in the next version of VS.NET the designers will support control arrays natively.
As an aside, Microsoft, in the latest beta, have already implemented Windows Forms Designers for MC++. Impressive.
Yes, that behaviour has changed. The MdiChildActivate event of the parent form will fire when the user switches between MDI children, and when the last one is closed.
I haven't done any data access with .net, but I think you access rows of a dataset something like:
DataSet.Tables(n).Rows(n)
So once you have the index, you should be ok.
I think there is a FocusedItem property to tell which item has the focus. I'm not sure about your second question, is there not a SelectedImage property of the ListItem class?
It may not be possible. I assumed there would be a member of the TreeViewAction class specifically for the user having double-clicked a node, but maybe not. If the DblClick event fired just before the BeforeExpand method you might be able to hack something.
Oh, and your declare statement is going to have to change too. Wherever you see a Long datatype in an API declare, change it to Integer. Also, some of those Integers are going to have to be IntPtrs, certainly when you actually pass an hDC to it.
Avoid using these APIs if at all possible, .NET has GDI+ functions which do pretty much everything you need, except raster ops.
You *can* use BitBlt successfully, but in order to get an hDC you must call the GetHdc method of the Graphics class. Don't forget to call the ReleaseHdc method when you're done!
There are a *lot* of threads in this forum answering exactly that question. At least 1 in 10, probably more :)
Try to remember that forms are just classes, and to change something on a class you need a reference to it. Just using the name of the form won't work because you need an instance.