3

私は、フローレイアウトパネルのコントロールの上部に水平に配置された一連のコンボボックスと、コントロールの残りのすべてのスペースを占めるフローレイアウトパネルのすぐ下のデータグリッドビューで構成される 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 のラップされた行はクリップされ、それに応じて分割コンテナー パネルの高さが強制的に大きくならないでください。FlowLayoutPanel.Resize イベントを処理して、ラップされたコンテンツに対応するために SPlitContainer.SplitterDistance プロパティを拡大および縮小しようとしましたが、コンテンツがラップされても FlowLayoutPanel.Height プロパティは変更されません。私は困惑しています。FlowLayoutPanel は壊れていますか? コンテンツのラッピングに関係なく、FlowLayoutPanel.Height が常に同じままである場合、FlowLayoutPanel の親コンテナーのサイズを変更するにはどうすればよいですか?

ありがとう

4

1 に答える 1

3

必要なものに対してこれを少し複雑にしすぎているようです。を使用せずに、組み込みのドッキングを使用して目的を達成できますSplitContainer。代わりに、次のようにフォームを設定します。

FlowLayoutPanel1 (Autosizse = true, Dock = Top)
  ComboBox1
  ComboBox2
  ComboBox3
DataGridView1 (Dock = Fill)

次に、非表示にしたい場合は、プロパティをFlowLayoutPanel1切り替えて非表示/表示することができます。Visible

于 2009-12-28T20:01:56.630 に答える