I have created a method which draws all the controls to the panel, but its draws them based on the order which I have listed them, which means PictureBox1 will always be behind all the other pictureboxes. Example:
e.Graphics.DrawImage(PictureBox1.BackgroundImage,
new Rectangle(PictureBox1.Location, PictureBox1.Size));
e.Graphics.DrawImage(PictureBox2.BackgroundImage,
new Rectangle(PictureBox2.Location, PictureBox2.Size));
it draws PictureBox1 first, then PictureBox2 second, then PictureBox3 third etc…
This means that PictureBox2 get drawn Over PictureBox1, and PictureBox3 gets Drawn over PictureBox2. Here’s a pic to display overlapping images: 
Now when I push a button when focus is on picturebox2 I would like the DrawImage order to be changed so that PictureBox2 is drawn last.
I’m sure one of you has a great solution to this, I would like to listen to any suggestions you may have.
In your question you haven’t made it clear what determines the order for all the other picture boxes in the panel. However, you can achieve the same effect using SetChildIndex. To Swap the position of PictureBox1 with PictureBox2 for instance, you can do:
Here,
pBox1could be the last PictureBox you hovered on andpBox2the current one you’re hovering on…