我写了一段代码
for(int i=0;i<100;i++)
{
TextBox tbox = new TextBox();
tbox.Location = new Point(50*i,80);
tbox.Size = new Size(30, 50);
tbox.Name = "tbox" + i.ToString();
this.Controls.Add(tbox);
}
我想做的是生成的TextBox中间没有缝隙,一个排一个,并且到窗体的边缘后自动换到下一行去,可是我做的只在一行里,请问高手如何做?
for(int i=0;i<100;i++)
{
TextBox tbox = new TextBox();
tbox.Location = new Point(50*i,80);
tbox.Size = new Size(30, 50);
tbox.Name = "tbox" + i.ToString();
this.Controls.Add(tbox);
}
我想做的是生成的TextBox中间没有缝隙,一个排一个,并且到窗体的边缘后自动换到下一行去,可是我做的只在一行里,请问高手如何做?
tbox.Size = new Size(30, 50); 大小和 起始位置
你把这2个值改改就能达到没有间隙
int countW = 50;
int countH = 80;
for (int i = 0; i < 100; i++)
{
TextBox tbox = new TextBox ();
tbox.AutoSize = false;
tbox.Name = "tbox" + i.ToString ();
tbox.Location = new Point(countW * (i % a ),countH * (i / a ));
tbox.Size = new Size(50, 80);
tbox.Enabled = true;
this.Controls.Add(tbox);
}
试试,在修改一下,应该可以了
override Form的OnResize方法,在里面重新计算textbox的位置
你可以使用窗体布局控件来避免这类问题的发生你可以尝试动态生成TableLayoutPanel,计算方法一样,添加TextBox的时候计算位置,添加到指定的单元格即可。