You're talking about two quite different topics here. In future, please keep each thread to a single topic and each topic to a single thread.

With regards to the first question, MDI child forms do not support transparency in Windows Forms. Transparency is easier to accomplish in WPF but there's no MDI implementation in WPF, so you'd have to fake it.

With regards to the second question, you can assign your dictionary to a public field/property in a module if you want it to be visible everywhere. That said, in a "proper" MDI implementation the child windows should ever be aware of each other's existence. Anything coming into a child should be passed in by the parent. If a child wants to tell the world about something it should either access its parent via its MdiParent property or, better yet, raise an event that the parent can handle. That way each child is completely independent of the parent and the other children. The parent manages everything. Child-to-child communication occurs by one child raising an event, the parent handling that event, the parent calling a method or getting a property of the first child if it needs more information, then finally the parent calling a method or setting a property of another child. No child has to know that the other children or even the parent exists. They simply raise events and let whoever's listening do what they need to do, and also to expose and recieve data through public methods and properties that are accessed by some unknown caller.