WinFormsのユーザーコントロールのレイアウト自動サイズ調整の問題
-
24-09-2019 - |
質問
A、Iはにflowlayoutpanelを取得しようとしてについては、この質問を掲載コンテナの上部にドッキングするとき、適切に自動サイズ調整。私は何を達成しようとしていたことは(左から右へ)、横がフォームの上部エッジにまたがって、DataGridViewのはflowlayoutpanel以下の利用可能なスペースの残りの部分を取ってflowlayoutpanel設定にしました。私はトラブルそれが必要な方法を自動サイズ調整するflowlayoutpanelの高さプロパティを取得を抱えていました。ポストされた答えは、私は、達成しようとしていた何のために完全に働いた偉大だった...
一人で十分に残すことができません。は、私は今、さらに一歩進み、ユーザーコントロールにflowlayoutpanelをラップしようとしています。私はこれを行うことはもはや適切にその高さのサイズを変更するflowlayoutpanelを引き起こすことを、しかし、発見しました。
ここで美しく動作します最初のレイアウトは、います:
FlowLayoutPanel1 (Autosize = true, Dock = Top)
ComboBox1
ComboBox2
ComboBox3
DataGridView1 (Dock = Fill)
そして、ここではそれがユーザーコントロールに包まれflowlayoutpanelである。
UserControl (Autosize = true, Dock = Top)
FlowLayoutPanel1 (Autosizse = true, Dock = Fill)
ComboBox1
ComboBox2
ComboBox3
DataGridView1 (Dock = Fill)
フォームのサイズが変更されたときに何らかの理由で、flowlayoutpanelが適切にその高さを変更しません。これは再現することが非常に簡単です。ああまた、FlowLayoutPanelの内容は、だけではなくコンボボックス何もすることができます。
解決
私は何の問題があることは、あなたがそれの高さを自動サイズ調整することの試みをオーバーライドするFlowLayoutPanel1.Dock = Fill
を持っているということだと思います。
修正は(あなたが前にそれを持っていたとして)セットFlowLayoutPanel1.Dock = Top
に思われ、その後、ユーザーコントロールのサイズを変更するFlowLayoutPanel1.Resize
イベントを処理します。基本的に、手動でUserControl.Size
と同期FlowLayoutPanel1.Size
を維持しようとしている。
はそれを行うには、よりスマートな方法があるかもしれないが、うまくいけば、それは正しい道にあなたを取得します...
他のヒント
あなたのユーザーコントロールは、幅のセットを持っていますか?確かにdesigner.csで見てください。それがない場合は、そのプロパティをリセットする必要があります。