2011-06-22 7 views
4

これはwinformsです。私は基本的に他のユーザーコントロールでいっぱいのFlowlayoutControlであるユーザーコントロールを作成しています。前の(左から右に)上にドッキングするために追加された各コントロールが必要です。残念ながら、flowlayoutcontrolはどのドッキングプロパティも無視するようです。そこにコントロールをドッキングする方法はありますか?アイテムを左から右に塗りつぶす必要がありますが、アイテムはリストビューのように配置する必要があります。 Theresは実際には、どのようなアプローチを取るかを決めるという事実のために私が提供できるコードはありません。Winforms:ドッキングを伴うFlowLayoutPanel

答えて

4

FlowLayoutPanel.FlowDirection PropertyがFlowLayoutPanelコントロールのフロー方向を示す含まれているコントロールの間隔に適用されます。

FlowLayoutPanel.WrapContents Propertyは、FlowLayoutPanelコントロールがその内容をラップするか、内容をクリップするかどうかを示します。

+0

@Akram、WrapContentsプロパティは、お互いのおかげで、コントロールの問題を解決しました。私は今、左から右へのすべての方法を埋めるためにuserControlsを取得している問題。 – Alex

+0

@Alex:[TableLayoutPanel](http://msdn.microsoft.com/en-us/library/system.windows.forms.tablelayoutpanel.aspx)の使用を検討しましたか? –

+0

私はTableLayoutPanelを使用していましたが、必要なときにスクロールバーを検出しませんでした。 AutoScrollをtrueに設定しても – Alex

1

FlowLayoutPanelのドッキングプロパティは、パネル内のコントロールのコンテナではなく、パネルのドッキングプロパティ(パネルの左などにFlowLayoutPanelをドッキングする場合など)です。

はDefaultPaddingとDefaultMarginプロパティで再生してみてください、これらは、それが

+0

回答ありがとうございますが、私はflowlayoutpanel内のUsercontrolsのドッキングプロパティを参照しています。パネル自体ではありません。 – Alex

+0

また、ユーザーコントロールのDockプロパティをDockStyle.TopとDockStyle.Fillに設定しようとしましたが、それを行うとコントロールが描画されません。ただし、スクロールバーは表示されます。私はそれがドッキングされているときにコントロールを引き出さない理由を理解していません。 – Alex

10

FlowLayoutPanelを右にドッキングするのは手間がかかります。元の質問から、あなたはリストビューのようなものが必要です。あなたのリスト(最も広いもの)の中の1つがFlowLayoutPanelの「仮想列」を定義していることを知っておくことが重要です。残りのアイテムはそれに従います。アイテムの1つを右にドラッグして、VSデザイナーでこれを証明できます。 「仮想列」がそれに続き、他の項目が固定されている場合は仮想列に従います。

列を定義しているコントロールをアンカーできないことに注意してください。それは何にも固執せず、奇妙なことが起こるでしょう。

これをプログラム的に行い、FlowLayoutPanelでLayoutイベントを処理し、以下のコードと同様のコードを記述します。デザイナーでは、リスト内のすべてのアイテムがドッキングされておらず、アンカー設定が「なし」に設定されていることが重要です。私は昨日、この1日を過ごしました。デザイナーでこれをやっていれば、以下のコードを動作させることができました。

+0

Layoutイベントを購読していただきありがとうございます。それは私が必要としていたもので、私はちょうど親の幅に基づいて子コントロールの幅を手動で設定しました。 – jeromeyers

関連する問題