Form中放了一个panel,panel是竖着放的(像滚动条一样)
现在有3个按钮 btn1 btn2 btn3
请问如何设置btn的Location,使得三个btn在panel中平均摆放(btn1在上方,btn2在中间,btn3在下方)

解决方案 »

  1.   

    本帖最后由 caozhy 于 2011-04-12 14:07:16 编辑
      

  2.   

    把btn1的Anchor设为Top
    btn2的Anchor设为Left和Right
    btn3的设为Bottom
      

  3.   

    设置dock属性,第一个top,第二fill,第三个bottom
      

  4.   

    你的这个代码我试了 但是最后一个btn我想让他靠在下面 紧贴着panel的底部 怎么弄阿?
      

  5.   

    依次将dock属性都设置为top即可
      

  6.   


    button1.Dock = DockStyle.Top;
                button2.Dock = DockStyle.Bottom;
                button3.Dock = DockStyle.Bottom;
                button4.Dock = DockStyle.Bottom;
                button5.Dock = DockStyle.Bottom;只留一个top就行
      

  7.   

    bottom是按顺序,从上往下走的。button5是最下面。
      

  8.   

    设置控件的 Top ,Width , Left ,Height 等属性即可
      

  9.   


                Button[] btns = new Button[6];
                for (int i = 0; i < btns.Length; i++)
                {
                    btns[i] = new Button();
                    btns[i].Text = "Button" + i;
                    btns[i].Location = new Point((panel1.Width - btns[i].Width) / 2, i * (btns[i].Height + (panel1.Height - btns[i].Height * 5) / 4));
                    panel1.Controls.Add(btns[i]);
                }
      

  10.   

    难道我的程序不行么。
    button3从2/3处开始,高度是1/3应该没错啊。
      

  11.   

    不是不行
    是最后一个btn离panel最低端有一定的距离,没有在panel的最底端
      

  12.   

    哦,我知道了。因为没有整除。btn1.Top = 0; btn1.Left = 0; btn1.Width = panel.Width; btn1.Height = panel.Height / 3;
    btn2.Top = panel.Height / 3; btn2.Left = 0; btn2.Width = panel.Width; btn2.Height = panel.Height / 3;
    btn3.Top = 2 * panel.Height / 3; btn3.Left = 0; btn3.Width = panel.Width; btn3.Height = panel.Height - 2 * panel.Height / 3;
      

  13.   

    好像不对 其实现在又8个按钮 我把代码改成这样            this.btn1.Top = 0;                      this.btn1.Left = 0;
                this.btn2.Top = panel1.Height / 8;      this.btn2.Left = 0;
                this.btn3.Top = 2 * panel1.Height / 8;  this.btn3.Left = 0;
                this.btn4.Top = 3 * panel1.Height / 8;  this.btn4.Left = 0;
                this.btn5.Top = 4 * panel1.Height / 8;  this.btn5.Left = 0;
                this.btn6.Top = 5 * panel1.Height / 8;  this.btn6.Left = 0;
                this.btn7.Top = 6 * panel1.Height / 8;  this.btn7.Left = 0;
                this.btn8.Top = 7 * panel1.Height / 8;  this.btn8.Left = 0;就是btn8这个按钮的底端没有与panel的底端重合 我希望btn8按钮与panel的底部重合在一起的
      

  14.   

    还有1点 就是每个btn的宽度与panel的宽度一样 每个btn的高度都是一样的
      

  15.   

    this.btn8.Top = 7 * panel1.Height / 8;  this.btn8.Left = 0;
    修改成
    this.btn8.Top = 7 * panel1.Height / 8;  this.btn8.Left = 0; this.btn8.Height = panel.Height - 7 * panel1.Height / 8;原因是每次除出来的有些余数,累积在一起就会使得最后一个稍微不准。你可以首先把Panel的Heght属性设置为8的整倍数,比如56、64、72、80……
      

  16.   

    这个
    Panel的高度是Form的高度 不好调整呀能不能这样做 btn1与panel的上边贴着 btn8与panel的下边贴着 再来处理其他btn的Top?
      

  17.   

    那个btn的按钮的高度已经设好了 我只用了你的
    this.btnN.Top = N * panel1.Height / 8
      

  18.   

    加载的动态算一遍就可以了,先定好button1.location = new point(x,y);
    后面的就button2.location = new point(x,button1.height+y);
    ......
    有几个就计算几个,要是不要那么紧密,可以button1.height+y+间距,这样不会那么难看的
      

  19.   

    button3.location = new point(x,button1.height + button2.height +y);
      

  20.   

    你的方法我看了 好像听明白我的问题
    btn的宽度 高度都是固定的 
    btn1与panel上端重合 btn8与panel下端重合 
    我再试一试你的方法
      

  21.   

    btn1与panel上端重合 btn8与panel下端重合  
      

  22.   

    放一个布局控件什么tablelayout,然后在里面设置一下按钮的属性。估计应该差不多了。。