2009-12-28 4 views
3

저는 ControllayoutPanel에서 컨트롤 상단에 수평으로 정렬 된 ComboBoxes와 컨트롤의 나머지 모든 공간을 차지하는 flowlayoutpanel 바로 아래에있는 Dataagridview로 구성된 UserControl에서 작업하고 있습니다. . 모든 드롭 다운을 쉽게 숨길 수 있어야하므로 SplitContainer.Panel1의 flowlayoutpanel 및 SplitContainer.Panel2의 Dataagridview와 함께 Orientation == Horizontal 인 SplitContainer를 사용할 수 있습니다. 다음FlowLayoutPanel AutoSize 높이가 작동하지 않습니다.

제어 계층은 :

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

flowlayoutpanel 수평 배향과 수평 공간은 드롭 다운 때 제어의 다음 행으로 아래로 감싸도록 flowlayoutpanel의 WrapContents 속성은 사실이다 제한적이므로 한 줄에 모든 드롭 다운을 맞추기에는 너무 좁습니다.

내가 겪고있는 문제는 flowlayoutpanel이 그 내용을 다음 행으로 래핑 할 때 Height 속성이 적절하게 변경되지 않는다는 것입니다. 감추어 진 flowlayoutpanel 행은 잘려 지므로 splitcontainer 패널의 높이가 적절하게 증가하지 않습니다. wrapped 내용을 수용하기 위해 SPlitContainer.SplitterDistance 속성을 늘리거나 줄이기 위해 FlowLayoutPanel.Resize 이벤트를 처리하려고했지만 FlowLayoutPanel.Height 속성은 내용을 래핑 할 때 변경되지 않습니다. 나는 혼란 스럽다. FlowLayoutPanel이 손상 되었습니까? 내용 줄 바꿈에 관계없이 FlowLayoutPanel.Height가 항상 동일하게 유지되면 FlowLayoutPanel의 부모 컨테이너의 크기를 조정할 수 있습니까?

고마워요.

답변

3

당신이 필요로하는 것에 비해 조금 복잡해 보이는 것 같습니다. SplitContainer을 사용하지 않고 내장 된 도킹을 사용하여 원하는 것을 수행 할 수 있습니다. 대신이 같은 양식을 설정 :

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

을 그리고 당신은 단지 그것을 표시/숨기기 할 수있는 Visible 속성을 전환 할 수 있습니다 FlowLayoutPanel1을 숨길 때.

+1

Brilliant! 이것은 완벽하게 작동했습니다! – echo