Geoff
Fri Jun 09 14:38:13 CDT 2006
Opa,
I tested that code both in the designer and at runtime and it worked
like a charm. What type of controls are you docking?
Make sure you aren't setting both controls' Location properties to
Point(0, 0). Give each a unique Y point and the dock them both to the
top.
Then...leave the control you ultimately want on the bottom still docked
to the "Top" and adjust the one you want above the other one using the
same code as below.
thePanel.Dock = DockStyle.None;
thePanel.BringToFront();
thePanel.Dock = DockStyle.Top;
Only adjust the control you want on top and don't give it a new
Location during that process. Let the docking handle that.
Feel free to post some code if you still can't get it to work.
Regards,
Geoff
http://nonspect.com
Opa wrote:
> Geoff, Thanks for the reply.
>
> I tried your suggestion, but I still have the same problem. I think
> it depends on the designer generated code. In which case, I don't
> want to modify this section.
>
> Any other ideas?
>
> "Geoff Munday" wrote:
>
> > Opa,
> >
> > I added a button and two panels to a form (one red and one green for
> > better viewing) and set their Dock properties to "Top" initially. In
> > the Button.Click event handler I was able to change the docking
> > priority with the following logic.
> >
> > private bool _usePanel1 = true;
> >
> > private void button1_Click(object sender, EventArgs e)
> > {
> > //add your logic here for picking which panel you want on
> > top
> >
> > Panel thePanel = _usePanel1 ? panel1 : panel2;
> >
> > thePanel.Dock = DockStyle.None;
> > thePanel.BringToFront();
> > thePanel.Dock = DockStyle.Top;
> >
> > _usePanel1 = !_usePanel1;
> > }
> >
> > I think the main thing is to keep the other control docked to the top
> > while you bring the desired control to the front and then dock it to
> > the top.
> >
> > Regards,
> >
> > Geoff
> >
http://nonspect.com
> >
> >
> > Opa wrote:
> > > I have a lingering problem with control docking and z-order.
> > > As I understand it, the control docking order based on the control z-order.
> > > So If I have two controls, Control1 & Control2 whose Dock properties are both
> > > set to Top, the control that is "Top Most" will appear on the top. I tried
> > > changing
> > > the z-order in the designer for Control2 by selecting bring to front, but
> > > when I show
> > > the form, Control1 appear on top.
> > >
> > > Programatically, I tried settting the z-order by calling the BringToFront
> > > method
> > > and then changing the Dock as follows:
> > >
> > > Control1.Dock = DockStyle.None;
> > > Control2.Dock = DockStyle.None;
> > >
> > > Control1.Location = new point (0,0);
> > > Control2.Location = new point (0,0);
> > >
> > > Control2.BringToFront();
> > >
> > > Control1.Dock = DockStyle.Top;
> > > Control2.Dock = DockStyle.Top;
> > >
> > >
> > > But this still does not work. How do I set Control2 to be on Top of the form?
> > > I hope I don't have to muck around with the designer generated code.
> > > I am using .Net 2.0.
> > >
> > > Thanks
> >
> >