弄了4个button按钮(a,b,c,d)放在一个panel中。4个button的DOCK都设置成TOP,
然后单击a,
a的单击事件如下:
 private void a_Click(object sender, EventArgs e)
        {
            this.a.Dock = DockStyle.Top;
            this.b.Dock = DockStyle.Bottom;
            this.c.Dock = DockStyle.Bottom;
            this.d.Dock = DockStyle.Bottom; 
        }b,c,d就到最下面了,但问题出现了,下面的顺序变成了d,c,b这样显示了,为什么顺序改变了。我希望的是b,c,d顺序显示的.而且,a_Click里面将this.b.Dock = DockStyle.Bottom;
            this.c.Dock = DockStyle.Bottom;
            this.d.Dock = DockStyle.Bottom;   3个语句顺便改变没有效果,
请知道的指教!!!

解决方案 »

  1.   

    Dock顺序是按照你把控件加到control里的顺序来的 
    也就是在design.cs里面 this.congrols.add(yourcontrol)的顺序
      

  2.   


                this.b.Dock = DockStyle.Bottom;
                this.c.Dock = DockStyle.Bottom;
                this.d.Dock = DockStyle.Bottom; 
    这几句改一下顺序。最先DockStyle.Bottom会自动放在最下面
      

  3.   


    正解,不过一般没人会想到展开系统自己产生的代码去看的,所以你也可以删除了控件重新添加一下,奇特的是,你在设计视图里先添加的控件,它在design.cs代码里add的时候会写在最下面,方向反过来的。
      

  4.   

    2位说了原因的高手,请你们讲下解决方法呀!!
    我最需要的是解决问题,
    这个原因我其实也注意到了.那为什么在最上面用top的时候顺序就正常呢
      

  5.   

               this.a.Dock = DockStyle.Top; 
                this.b.Dock = DockStyle.Bottom; 
                this.b.BringToFront();
                this.c.Dock = DockStyle.Bottom; 
                this.c.BringToFront();
                this.d.Dock = DockStyle.Bottom; 
                this.d.BringToFront();
      

  6.   

            private void button1_Click(object sender, EventArgs e)
            {
                this.button1.Dock = DockStyle.Top;
                this.button4.Dock = DockStyle.Bottom;
                this.button3.BringToFront();
                this.button3.Dock = DockStyle.Bottom;
                this.button3.BringToFront();
                this.button2.Dock = DockStyle.Bottom;
                this.button2.BringToFront();        }这样排运行的效果是button1
    button2
    button3
    button4
      

  7.   

    假设4个button分别是a,b,c,d,在a的单击事件中添加private void a_Click(object sender, EventArgs e) 
            {
                a.Dock=DockStyle.Top
                b.Dock = DockStyle.Bottom;
                c.Dock = DockStyle.Bottom;
                d.Dock = DockStyle.Bottom;
                c.BringToFront();
                b.BringToFront();
            }这个没有问题,测试通过,我以前写过。
    单纯用Dock属性不能实现你的要求,要配合BringToFront()方法。
    再举个例子,单击b,让a,b在panel的上面,c,d在panel的下面。次序从上到下是a,b,c,d        private void b_Click(object sender, EventArgs e)
            {
                a.Dock = DockStyle.Top;
                b.Dock = DockStyle.Top;
                c.Dock = DockStyle.Bottom;
                d.Dock = DockStyle.Bottom;
                b.BringToFront();
                c.BringToFront();        }希望对楼主有所帮助。
      

  8.   

    其实这里需要考虑的就是Z-Order, 楼主可以看看Z-Order相关内容,当然BringToFront and SendToBack可以操作Z-Order.