本人是新人小白,第一次写东西,内容很简单 ,就当是自己的小小记录吧。
可能有一些像我一样的小白,在自己刚学习制作窗体应用程序的时候,都特别烦一些控件的放置,一个个拖特别累,尺寸距离等也不好调节。我在学习了师兄的部分代码后,觉得他的这个思路很好,在这里与大家分享。
一种代码实现文本框整齐排列的思路,其他控件也可参考。
public class AddControls
{
// 函数作用:ADDTextBox()为动态添加二维文本框函数,添加TextBox至GroupBox
// 参数:
// tbx为文本框数组;gbx为文本框所添加到哪个GroupBox;
// rows,cols分别表示文本框的行数和列数;
// width和height分别表示文本框的宽度和高度;
// x,y分别表示文本框在GroupBox中水平方向及竖直方向的位置;
// step_x,step_y分别表示多个文本框水平方向及竖直方向的间距;
public void ADDTextBox_2D(ref TextBox[,] tbx, GroupBox gbx, int rows, int cols, int width, int height, int x, int y, int step_x, int step_y)
{
tbx = new TextBox[rows, cols];
for (int i = 0; i < rows; i++)
for (int j = 0; j < cols; j++)
{
tbx[i, j] = new TextBox();
gbx.Controls.Add(tbx[i, j]);
tbx[i, j].Width = width;
tbx[i, j].Height = height;
tbx[i, j].Location = new Point(x + step_x * j, y + step_y * i);
tbx[i, j].TextAlign = HorizontalAlignment.Center;
//tbx[i, j].BorderStyle = BorderStyle.FixedSingle;
}
}
}
这就是最核心的部分。但在使用该类之前,需要先对文本框进行全局范围的定义。
public static TextBox[,] tbx_DH;
恕我眼拙,其实此处我一开始并没有看懂,不知道TextBox也可以作为数组类型。后来我发现,此处的TextBox就是一个类,和int、double是平行的!也就是说tbx_DH是一个数组,只不过其中每个元素都是文本框罢了。然后只要使用循环逐个对每个元素进行长宽高距离等的设定即可。
同理,Command等各种控件,需要对其进行排列的任何类型的控件,甚至不只是控件,都可以用这种方法来实现。同时,数组也可以是一维的,所以一行一列也可以完成。