2016-12-01 9 views
1

私はいくつかのボタンが内部にあるFlowLayoutPanelを持っています。 FlowLayoutPanelの幅を最大のボタンと同じにしたいが、高さは固定したい。どうすればそれを達成できますか?私はそれを見つけたが、私が見つけたのはWPFに関するものだった。C#WinFormsでコントロールの自動幅または自動高さを設定する方法はありますか?

+0

タイトルがあまりにも一般的です。さまざまなコントロールに異なるソリューションを使用できます。 'AutoSize'を組み込んだコントロールの一般的なルールとして、コントロールのMinimumSizeとMaximumSizeを設定した場合、その値は通常auto-sizeルーチンによって尊重されます。 たとえば、 '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

これに応じて、コントロールのアンカーを適宜設定することでこれを達成できるはずです。 here およびhereをお読みください。

+0

例を詳しく教えてください。 – Sipo

+0

[link](http://www.techrepublic.com/article/manage-winform-controls-using-the-anchor-and-dock-properties/)私はこの記事でそれがとてもうまくいっていると思います。コントロールの特定のエッジ(上、下、左、右)の固定位置を設定できるという考え方です。これにより、あなたのwinForms上で素晴らしいスケーリングを達成することができます。だから、あなたが望むようにフォームを設定してからアンカーを設定すると、ユーザーがフォームのサイズを変更したとしても、それはうまくいくはずです。 – Boldan

+0

答えがリンクであるときに回答としてマークすることはできません... StackOverflowの法則です – Sipo

関連する問題