質問

私は、flowlayoutpanel のコントロールの上部に水平に配置された多数の ComboBox と、コントロールの残りのすべてのスペースを占有する flowlayoutpanel の真下にある datagridview で構成される UserControl に取り組んでいます。すべてのドロップダウンを簡単に非表示にできる必要があるので、Orientation == horizo​​ntal の SplitContainer を用意し、SplitContainer.Panel1 に flowlayoutpanel、SplitContainer.Panel2 に datagridview を配置します。

制御階層は次のとおりです。

SplitContainer1
    SplitContainer1.Panel1
        FlowLayoutPanel1
            ComboBox1
            ComboBox2
            ComboBox3
    SplitContainer1.Panel2
        DataGridView1

flowlayoutpanel は水平方向に配置され、水平方向のスペースが限られているため、flowlayoutpanel の WrapContents プロパティは True になり、コントロールの幅が狭すぎてすべてのドロップダウンを 1 行に収まらない場合、ドロップダウンは次の行に折り返されます。

私が抱えている問題は、flowlayoutpanel がその内容を次の行にラップするときに、Height プロパティがそれに応じて変化しないことです。flowlayoutpanel のラップされた行はクリップされ、それに応じて SplitContainer パネルの高さが強制的に拡大されることはありません。FlowLayoutPanel.Resize イベントを処理して、ラップされたコンテンツに合わせて SPlitContainer.SplitterDistance プロパティを拡大および縮小しようとしましたが、コンテンツがラップされても FlowLayoutPanel.Height プロパティは変更されません。困っています。FlowLayoutPanelが壊れているのでしょうか?コンテンツのラッピングに関係なく、FlowLayoutPanel.Height が常に同じままの場合、FlowLayoutPanel の親コンテナのサイズを変更するにはどうすればよいですか?

ありがとう

役に立ちましたか?

解決

それはあなたがしているが、これもあなたが必要なもののために複雑少し作るように思えます。あなたは、組み込みのSplitContainerを使用せずに、あなたが望むものを達成するためにドッキングを使用することができます。代わりに、このようなフォームを設定します:

FlowLayoutPanel1 (Autosizse = true, Dock = Top)
  ComboBox1
  ComboBox2
  ComboBox3
DataGridView1 (Dock = Fill)
あなたが非表示FlowLayoutPanel1にしたいとき

次に、あなただけの非表示にするVisibleプロパティトグル/それを表示することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top