所以这是重要的部分代码:
this.textBoxes[i].Location = new System.Drawing.Point(x, 20 + i * 25);
this.textBoxes[i].Size = new System.Drawing.Size(35, 20);
textBoxes[i].Parent = this;
this.groupBox1.Controls.Add(textBoxes[i]);
假设groupBox1的大小是可变的。如何使文本框位于组框的中间,文本框左侧与组框左侧之间的距离与文本框右侧之间的距离相同和组合框的长度(右侧)?
答案 0 :(得分:2)
假设您已将TextBox正确放置在GroupBox的中间,您应该能够禁用控件上的所有锚点,并且它将在中心浮动。
当调整父控件(GroupBox)的大小时,其中没有锚点的控件应该更改位置,以便控件和GroupBox之间的相对边距保持不变。
试试这个:
this.textBoxes[i].Anchor = AnchorStyles.None;
默认情况下,控件通常会锚定到左侧和上侧的父控件。
当控件锚定到其容器的边缘时,控件和指定边缘之间的距离在容器调整大小时保持不变。例如,如果控件锚定到其容器的右边缘,则当容器调整大小时,控件的右边缘与容器的右边缘之间的距离保持不变。控件可以锚定到控制边的任何组合。
以下是涉及您要做的事情的部分:
如果控件锚定到其容器的相对边缘(例如,顶部和底部),则在容器调整大小时调整大小。如果控件的Anchor属性设置为AnchorStyles.None,则控件移动控件容器调整大小的一半距离。例如,如果Button的Anchor属性设置为AnchorStyles.None,并且控件所在的Form在任一方向上调整了20个像素,则该按钮将在两个方向上移动10个像素。
您可以在MSDN上阅读有关AnchorStyles的更多信息。
答案 1 :(得分:1)
试
this.textBoxes[i].Anchor = AnchorStyles.None;
this.textBoxes[i].Dock = DockStyle.None;
Point pt = this.groupBox1.DisplayRectangle.Location;
pt.X += (this.groupBox1.DisplayRectangle.Width - this.textBoxes[i].Width)/2;
pt.Y += (this.groupBox1.DisplayRectangle.Height - this.textBoxes[i].Height)/2;
this.textBoxes[i].Location = pt;