我们在用C#给Panel或者tabcontrol中添加多个控件实例时,发现最新添加的控件排在最前面,而不是最后面,顺序完全颠倒了过来。因为我们设置的属性是Dock.Top,这样虽然可以随着窗体的变化而变化,但是形成了倒序。
1.可以把需要的控件反向添加来解决这个问题,但是不是最好的解决方案。
2.可以把Dock.Top属性去掉,顺序排列添加是没问题了,但是放大窗体时会发现总会不产生变化而不美观
3.我们可以把控件的Width属性设置成随主控件的width变化而变化(比如:tabtrol控件里添加文本框,不随着窗体的变化而变化,而我们的文本框是子控件,声明且设置跟随父控件宽度变化而变化,问题解决。
代码如下:
private RichTextBox GetRichTextBox(string text)
{
RichTextBox richText = new RichTextBox();
richText.Font = new System.Drawing.Font("楷体", 12F, FontStyle.Bold,
GraphicsUnit.Point, ((byte)(134)));
richText.Location = new System.Drawing.Point(3, 3);
richText.Name = "richTextBox1";
richText.Size = new Size(719, 91);
richText.Width = tabControl1.Width;
richText.TabIndex = 45;
richText.Text = text;
richText.Location = new System.Drawing.Point(0, ControlsHeight());
return richText;
}
主要是 richText.Width = tabControl1.Width;