日期:2014-05-19  浏览次数:20706 次

菜鸟求救~~~~~(100分)
新人学C#,现在想实现下面的功能:

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

------解决方案--------------------
//创建一个新实例
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.
再加一个循环,根据传来的变量,循环添加就可以了
------解决方案--------------------
添加的时的定位和大小调整上面都写了.
如果想要在添加以后,窗体大上改变时,随着窗体大小调整.
就在窗体的Resize事件中处理.
用this.controls( " ")找到这一组PictureBox,再进行定位,调整大小.
------解决方案--------------------
可以度对new出来的控件动态赋其坐标值
当然还有一个简单的方法就是放一个flowLayoutPanel控件
就可以自动排列了
------解决方案--------------------
这个题我也用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);
}