2009-08-31 12 views
20

I持ってLabel(トップ)から構成さUserControlFlowLayoutPanelPanel(下)(、トップダウンフローなしラップを記入)。ユーザーコントロールは、取得したもののリストに基づいていくつかのコントロールを作成し、FlowLayoutPanelに追加します。C#の:ユーザーコントロールを取得する方法を適切に自動サイズ自体

UserControlを正しくサイズ変更してFlowLayoutPanelにスクロールバーがないようにするにはどうすればよいですか?私はFlowLayoutPanelUserControl自体にAutoSizeAutoSizeModeのさまざまな組み合わせを使用しようとしましたが、私はそれを働かせることはできません。いずれにせよ、私は自分自身のサイズを変更しない何かで終わるか、それとも十分に大きくならないか、ほとんど無駄にまで押し下げられます。

答えて

11

感謝をスクロールバーを取得せずに必要なサイズにすでに追加したコントロールのサイズを変更することができFlowLayoutのにコントロールを追加するには

+0

最後の部分を解決できましたか? – Macke

+0

@Mackeこれは6年前のようだったので、私は考えていません、hehe。たぶん、私がこれに尋ねた頃に私から聞いた質問を探してみましょう:P – Svish

5

UserControlのAnchorプロパティとDockプロパティを使用して、コントロールの端がUIの他の部分に「接着」するようにオプションを設定できます。 UIのサイズが変更されると、コントロールが続きます。

ユーザーコントロールのすべてのコントロールでドッキングを使用し、コントロールの端をドッキングするように設定すると、コントロールがUserControlでサイズ変更され、アンカー/ドッキングをUserControlに設定できるようになりました。

+3

私は知っていますが、コントロールのサイズを親に合わせて変更したくありません。 「FlowLayoutPanel」の内容をスクロールバーや内容をクリッピングすることなくカバーできるだけの大きさになるように、拡大または縮小する必要があります。 – Svish

0

私はこの問題を解決する最良の方法は、(あなたがトップダウンフローを使用していたので高さ)であることを、パネルの高さを調整するためにflowlayoutpanelにControlAddedイベントにいくつかのコードを使用していたことが判明:

e.Control.Location.Y + e.Control.Height + some margin 

と、usercontrol自体のAutoSizeプロパティをTrueに設定します。

また、Mickelの回答に従って、ドッキングとアンカーの提案を行う必要があります。

この機能は、FlowLayoutPanelから継承し、ControlAddedメソッドをオーバーライドする独自のコントロールにカプセル化できます。

2

TableLayoutPanelFlowLayoutPanelをラップすると、適切な自動サイズ調整が可能になります。

あなたUserControl次のようになります。そのUserControlを使用した場合

UserControl 
    TableLayoutPanel (Dock-Fill) 
     Row1 : Label 
     Row2 : FlowLayoutPanel (Panel:Dock-Fill AND AutoSize, Row:AutoSize) 
     Row3 : Panel 

ここでも、それはあなたがAutoSize行または列を使用してTableLayoutPanelでそれをラップする必要があります可能です。

ウォッチSplitContainersのために、しばしば自動サイズ調整の動作がバランスを崩してしまいます。あなたはすべての提案のためのフローレイアウトpanel.lため

0

。今回の解答はFlowLayoutPanelUserControlの両方についてAutoSizetrueに設定したようです。

今、このUserControlとその他のコントロールを含むフォームを取得する方法は、私は現時点では分かりませんが、別の質問になるはずです...

関連する問題