2016-12-01 67 views
1

我有一个FlowLayoutPanel里面有一些按钮。我希望FlowLayoutPanel的宽度与最大的按钮相同,但要修复高度。我怎么能做到这一点?我用google搜索了它,但是我发现的全部都是关于WPF的。有没有办法在C#WinForms中自动调整宽度或自动调整控件大小?

+0

问题的标题过于笼统。您可以为不同的控件使用不同的解决方案作为内置'AutoSize'支持的控件的一般规则,如果您设置控件的'MinimumSize'和'MaximumSize',则该值通常受自动调整大小例程的支持。 例如对于'FlowLayoutPanel',您可以通过将'FlowLayoutPanel'的最小高度和最大高度和高度设置为相同的固定值并将其'AutoSize'设置为true来实现所需的布局。此外,您需要将'FlowDirection'设置为'TopDown'和'WrapContents'为false。 –

回答

1

你可以简单地通过LINQ的控制,并找到你的按钮的最大宽度:

int maxWidth = flp.Controls.OfType<Button>().Max(x => x.Width) + 
       (flp.Margin.Left + flp.Margin.Right); 
flp.ClientSize = new Size(maxWidth, flp.ClientSize.Height); 
0

您应该可以通过相应地设置控件上的锚来实现此目的。 阅读herehere

+0

能否请您详细说明一个例子? – Sipo

+0

[link](http://www.techrepublic.com/article/manage-winform-controls-using-the-anchor-and-dock-properties/)我认为这篇文章很好地描述了它。这个想法是,您可以为控件的某些边(上,下,左,右)设置固定位置。有了这个,你可以在你的winForms上实现一个很好的扩展。所以,如果你按照你想要的方式设置你的表单,然后设置锚点,那么即使用户调整了你的表单,它也应该看起来不错。 – Boldan

+0

当答案是链接时,我无法将其标记为答案...这是StackOverflow的规律,我认为... – Sipo