我有一个WinForms项目,我希望随着表单的尺寸调整,所有控件都按比例增长。这是表单在正常状态下的样子:正规状态形式
我尝试过根据表单上每个控件的位置将Anchor
属性设置为它们的适当值,虽然它确实移动了控件,但它们的大小保持不变。我尝试使用AutoSize
属性,但也没有效果。下面是使用Anchor
属性集最大化表单后的样子:最大化形式
我还尝试使用肖恩·哈尔沃森中的一个公式来动态调整所有控件的大小,但是它没有正确地重新定位控件,而且我似乎也找不出原因。下面是我用来动态调整大小的代码:
private void Main_Load(object sender, EventArgs e)
{
originalFormSize = new Rectangle(this.Location.X, this.Location.Y, this.Size.Width, this.Size.Height);
submitBtnOriginal = new Rectangle(submitButton.Location.X, submitButton.Location.Y, submitButton.Width, submitButton.Height);
}
private void Main_Resize(object sender, EventArgs e)
{
resizeControl(submitBtnOriginal, submitButton);
}
private void resizeControl(Rectangle r, Control c)
{
float xRatio = (float)(this.Width) / (float)(originalFormSize.Width);
float yRatio = (float)(this.Height) / (float)(originalFormSize.Height);
int newWidth = (int)(r.Width * xRatio);
int newHeight = (int)(r.Height * yRatio);
int newX = (int)(r.Width * xRatio);
int newY = (int)(r.Height * yRatio);
c.Location = new Point(newX, newY);
c.Size = new Size(newWidth, newHeight);
}
当我运行这段代码时,它会将按钮移动到窗体的另一个角落,但它正确地调整了它的大小。
这显然是相当多余的,因为我必须为我想要调整大小的每个控件获得一个原始大小,但是如果我能够动态调整大小来工作的话,我会很好。我感到惊讶的是,这不是一个更常见的问题,除了使用Anchor
和Dock
属性之外,我几乎找不到关于这个特定主题的任何东西。我错过了什么简单的方法吗?这是一个比看起来更困难的问题吗?
发布于 2022-02-08 09:56:19
将TextBox anchor
属性值作为Top, Bottom, Left, Right
并调整窗体的大小。那应该管用。
https://stackoverflow.com/questions/71019323
复制相似问题