2016-12-01 65 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