新人学C#,现在想实现下面的功能:   本人想在一个空白的FORM里面自动NEW出相应个数大小相等的pictureBox  要NEW出的个数从另外的一个FORM中的文本框中读取。  现在遇到的问题是NEW出的pictureBox任何根据当时FORM的大小来调整自身的大小并排列好??特别是NEW出的pictureBox的定位问题,不知道NEW出来后如阿能让它们自动排列好?  希望高手能给出实现代码  谢谢了咯

解决方案 »

  1.   

    加splitContainer这样的容器定位比较省事.否则还要自己定位.估计还要写resize事件
      

  2.   

    //创建一个新实例
    XPButton tmpButton = new XPButton();             
    //设置属性tmpButton.Height = 30;                           
    tmpButton.Width = this.Width;
    tmpButton.Text = tmpMenuItem.MenuItemCaption;
    tmpButton.Visible = false;//添加事件处理过程
    tmpButton.Click += new System.EventHandler(this.BtnItem_Click); 
    //最后添加到窗体
    this.Controls.Add (tmpButton);上面添加的是一个按钮.
    你可以改成PictureBox.
    再加一个循环,根据传来的变量,循环添加就可以了
      

  3.   

    这个得 根据你的 form窗体的 高宽
    和 图片的个数
    来确定 picturebox的高度和宽度
      

  4.   

    添加的时的定位和大小调整上面都写了.
    如果想要在添加以后,窗体大上改变时,随着窗体大小调整.
    就在窗体的Resize事件中处理.
    用this.controls("")找到这一组PictureBox,再进行定位,调整大小.
      

  5.   

    根据窗体高度和宽度设置,就是Resize()事件,以前弄过,主要是数学问题,慢慢弄
      

  6.   

    可以度对new出来的控件动态赋其坐标值
    当然还有一个简单的方法就是放一个flowLayoutPanel控件
    就可以自动排列了
      

  7.   

    这个题我也用flowLayoutPane控件做的,但总是控制的不太准确,希望高手们指教在生成Picture的按钮_Click事件及flowLayoutPane的Resize事件里写
    this.flowLayoutPanel1.Controls.Clear();
    int picN = Convert.ToInt32(this.textBox1.Text.Trim());
    int fS = this.flowLayoutPanel1.Width * this.flowLayoutPanel1.Height;
    int picS =fS/picN;
    int picW = Convert.ToInt32(System.Math.Sqrt(picS))-20;//这里控件不准确
    for (int i = 0; i < picN; i++)
    {
        PictureBox P1 = new PictureBox();
        P1.Image = Image.FromFile("1.jpg");
        P1.Width = picW;
        P1.Height = picW;
        this.flowLayoutPanel1.Controls.Add(P1);
    }