How to use PictureBox with MDI form? - vb.net

I have an MDI windows form and many child windows forms in vb.net. What exactly done that the Mdi form have a PictureBox control over it. If I call a child form from mdi form then PictureBox of MDI form overlap the child form mean it hides the child form behind the PictureBox of MDI windows form.
How to send PictureBox behind windows forms?

This is how i approached the situation.
Since i am using a MDI-Parent Form and other Child Forms, I thought to Show() the picture box (pbImage.Show()) when the MDI Parent Control is doing nothing. If we open a new Child form, then we Hide() the pictureBox. Worked for me.

There are some facts about MDI Container Form that you should know:
The client area of the form is filled by MdiClient control which hosts all MDI children. So if you add a Control to the MDI parent, it will be located in front of the MdiClient and so it will be shown in front of MDI child forms.
You can not add any control to MdiClient control. It just allow adding MDI child forms.
To show a picture in MDI parent, you can set BackgroundImage and BackgrroundImageLayout, for example:
Dim mdiClient = Me.Controls.OfType(Of MdiClient)().First()
AddHandler mdiClient.Resize, Sub(s, a) mdiClient.Invalidate()
Me.BackgroundImage = My.Resources.SomeImage
Me.BackgroundImageLayout = ImageLayout.Center

Related

Form inside another form without using MDI

Goal: Make Form3 (red) inside Form2 (blue) which's MDI child of Form1 (yellow)
Form3 have it's own code and own design, I need it to be part Form2 in some situations, not always.
I could make Form3 (red) MDI child of Form2 (blue), but the problem is that Form2 (blue) is already MDI child of Form1 (yellow).
How can I solve this problem?
Each Control has a property Controls, to which you can Add a Control, but if you try to do that with a Form, you get the exception
Top-level control cannot be added to a control.
even though Form : Control
But you could just fill a control with a Panel with all the Form's controls in it, and take that Panel and add it to another Control.
' In Form1, Panel1 is defined, you will put the other panel in here
' In Form2, Panel1 is defined, this is the other panel
Me.Panel1.Controls.Add((New Form2).Panel1)

vb.net mdi child is hidden behind MDI Parent Panels

I am planning to have a vb.net windows form applocation that has a main mdi ( contains menu strip + panels all over the mdi )
the problems is when a child form is shown , and when minimizing the child form it disappears behind the main mdi.
any ideas how to solve this without changing the size of the child form
MDI Issue

MDIContainer Grey Background (VB.NET)

My application has a main form which is the parent of ALL MDIChild forms. It has its own cool little background.
I want to have 4 buttons on the Main Form that load a different form in the MDI Container. My form is transparent so all the little designs ive made for my picture box buttons overlap the main form nicely UNTIL Visual Studio paints that stupid background grey when you set the IsMDIContainer property to true. The buttons now have greyspots (as they are transparent and its like it bleeds through the background image and into the greyspot of the MDI Container).
I've googled this for hours and no one has answer. I want the buttons to be transparent to the Main Forms BG Image and NOT the grey MDIContainer BG.
Using VS2019, VB.NET The image above shows Form1 with the background and an overlayed Form 5 with all the controls. I wanted the 2 cloud looking buttons at the bottom (which are supposed to be on the Parent Form 1) to not have that grey box around them but to be transparent to the Form1 background image.
First, you could use this code under your mdi parent load event:
For Each ctl As Control In Me.Controls
If TypeOf ctl Is MdiClient Then
ctl.BackColor = Me.BackColor
End If
Next ctl
but it will work only if you set a plain color (e.g. only red or orange or any other color) as backcolor to this mdi parent form, but doesn't work with images.
you must know that mdi parent forms are designed to show only the child forms, so if you want a background image for your form just use a regular form then add a panel or multiple panels to it instead of your mdi child forms which will do the same job plus enabling controls transparency.
for your information, mdi child forms is a very old technique which is rarely used today.

Transfer MainMenu Items to MenuStrip?

I work on MDI winform app in VB. One form which become child of my MDI have a mainMenu control with a lot of items. I want to show this mainMenu control on specific panel of MDI, or to add all of it's items on MenuStrip control which is on MDI?

VB.NET Picturebox on top of MDI Child

Any idea why a picturebox in a MDI parent would show on top of a MDI child? (even when MDI child = topmost)
When calling picturebox.SendToBack the picturebox disappears in the MDI parent.
What I did was, created a borderless form with the picturebox on it, and threw it on the MDI parent as a MDI child, seems to do the job!