1

少し前に、コンテナの上部にドッキングしたときにフローレイアウトパネルを適切に自動サイズ調整しようとすることについて、この質問を投稿しました。私が達成しようとしていたのは、フォームの上端にまたがる水平 (左から右) の flowlayoutpanel と、flowlayoutpanel の下の残りの利用可能なスペースを占める datagridview をセットアップすることでした。flowlayoutpanel の高さプロパティを本来の方法で自動サイズ調整するのに問題がありました。投稿された回答は、私が達成しようとしていたことに対して完全に機能しました。これは素晴らしかったです...

十分に放っておけないので、さらに一歩進んで、flowlayoutpanel を UserControl にラップしようとしています。ただし、これを行うと、flowlayoutpanel の高さが適切にサイズ変更されなくなることがわかりました。

美しく機能する最初のレイアウトを次に示します。

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

ここでは、UserControl にラップされた flowlayoutpanel を使用しています。

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

何らかの理由で、フォームのサイズが変更されたときに、flowlayoutpanel の高さが適切に変更されません。これはかなり簡単に再現できます。また、FlowLayoutPanel のコンテンツは、ComboBox だけでなく、何でもかまいません。

4

2 に答える 2

3

FlowLayoutPanel1.Dock = Fill問題は、高さを自動サイズ変更しようとするオーバーライドを持っていることだと思います。

修正はおそらくFlowLayoutPanel1.Dock = Top(以前と同じように)設定し、FlowLayoutPanel1.Resizeイベントを処理してユーザーコントロールのサイズを変更することです。UserControl.Size基本的に、手動で との同期を維持しようとしていFlowLayoutPanel1.Sizeます。

それを行うためのよりスマートな方法があるかもしれませんが、うまくいけば、それはあなたを正しい道に導きます...

于 2010-02-01T17:35:20.030 に答える
0

UserControl に幅が設定されていますか? 確認するには、designer.cs を参照してください。その場合は、そのプロパティをリセットする必要があります。

于 2010-02-01T09:07:23.647 に答える