Hi Peter, I'm just guessing, but somehow I don't think I can send an attachment through this list? Anyway, a quick testcase is just create a new "Windows Application" project. Change the IsMDIContainer property of Form1 to True. Then add this code to the constructor:

System.Drawing.Bitmap Backdrop = new Bitmap(100,100);
System.Drawing.Graphics GBack = System.Drawing.Graphics.FromImage(Backdrop);
GBack.FillRectangle(System.Drawing.Brushes.Blue,0,0,100,100);
GBack.DrawRectangle(System.Drawing.Pens.Red, 10,10,80,80);
this.BackgroundImage = Backdrop;
Anyway, I've played around with it a bit more, and found the behaviour is a little different then I first thought. I believe the above actually does set the background image for the form - but the MDI client area is drawn over top of that. (And if you set IsMDIContainer to False, you will see the image in Mono).

With a toolbar, it's actually not that the toolbar gets the image, but that the toolbar is transparent, showing the underlying background. Resizing the window makes this obvious - you'll see the image scrolling by beneath the toolbar.

The interesting part is that Microsoft is inconsistent here - BackgroundImage works, but BackColor does not (neither work for Mono). So possibly Mono is the one doing it correctly? Anyway, did a search for MDI background color, and found this:

http://www.codeproject.com/cs/miscctrl/mdiclientcontroller.asp

Basically, by looping through the MDI form's Controls collection, you can get a handle to the MDI client area. And then using that handle, set the BackColor ... or the BackgroundImage! And doing it this way works in both .Net and Mono.

So I'm happy doing it that way. Up to you if you want to consider this a Mono bug or a .Net bug ...

Glen.


_______________________________________________
Mono-list maillist  -  Mono-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to