public Button[] b = new Button[10];
        public Panel[] p = new Panel[10];
        Form2 f = new Form2();
        public Form1()
        {
            InitializeComponent();
        }        private void button1_Click(object sender, EventArgs e)
        {
            int x=0,y=0,k=0,l=0;
            for (int i = 0; i < 3; i++)
            {
                p[i] = new Panel();
                p[i].BackColor = Color.Brown;
                p[i].Width = 150;
                p[i].Left =100+ x * p[i].Width;
                p[i].Height = 200;
                p[i].Top =100+ y * p[i].Height;
                p[i].Name = "b" + i;
                f.Controls.Add(p[i]);
                for (int j = 0; j < 10; j++)
                {
                    b[j] = new Button();
                    b[j].BackColor = Color.Brown;
                    b[j].Width = 15;
                    b[j].Left = k * p[i].Width;
                    b[j].Height = 30;
                    b[j].Top = l * p[i].Height;
                    b[j].Name = "b" + i;
                    p[i].Controls.Add(b[j]);                     k+=1;
                    if(k==10)
                    {
                      k=0;
                      l++;
                    }
                }
                x += 1;
                if (x == 3)
                {
                    x = 0;
                    y += 1;
                }
                
            }
            f.Show();为什么只有PANEL0里有BUTTON?剩下2个没有呢?

解决方案 »

  1.   

    b[j].Left = k * b[i].Width;
                        b[j].Height = 30;
                        b[j].Top = l * b[i].Height;
    Left 和TOP 是对于父容器的位置。
      

  2.   

    Left是Top是相对于父容器的位置,如下测试一下: int x=0,y=0,k=0,l=0;
                f = new Form2();
                f.Controls.Clear();
                for (int i = 0; i < 3; i++)
                {
                    p[i] = new Panel();
                    p[i].BackColor = Color.Brown;
                    p[i].Width = 150;
                    p[i].Left =100+ x * p[i].Width;
                    p[i].Height = 200;
                    p[i].Top =100+ y * p[i].Height;
                    p[i].Name = "b" + i;
                    p[i].BorderStyle = BorderStyle.FixedSingle;
                    
                    for (int j = 0; j < 10; j++)
                    {
                        b[j] = new Button();
                        b[j].BackColor = Color.Brown;
                        b[j].Width = 15;
                        b[j].Left = k*18;//空出三个像素
                        b[j].Height = 30;
                        b[j].Top = j*35; //高出三个像素
                        b[j].Name = "b" + i;
                        b[j].Text = "" + j; 
                        p[i].Controls.Add(b[j]);
                        
                        k+=1;
                        if(k==10)
                        {
                          k=0;
                          l++;
                        }
                    }
                    f.Controls.Add(p[i]);
                    x += 1;
                    if (x == 3)
                    {
                        x = 0;
                        y += 1;
                    }
                    
                }
                f.Show();