2011-10-24 60 views
1

我有一個FlowLayoutPanel和一個UserControl。如何將UserControl停靠到FlowLayoutPanel中?

我已經將多個用戶控件添加到FlowLayoutPanel中,並且我試圖將它們停靠在頂部,因此當我更改FlowLayoutPanel的大小時,usercontrols的大小(寬度)會相應更改。

回答

3

您不能在FlowLayoutPanel中放置任何東西,它會被忽略。

查看顯然由微軟團隊發佈的answer here

他們說:

的FlowLayoutPanel的依賴於最大的控制,以在其內有效地定義列/行。下面的代碼將第一個控件的大小設置爲FLP的寬度,以實現與您想要的類似的佈局。

private void flowLayoutPanel1_Layout(object sender, LayoutEventArgs e) 
    { 
     flowLayoutPanel1.Controls[0].Dock = DockStyle.None; 
     for (int i = 1; i < flowLayoutPanel1.Controls.Count; i++) 
     { 
      flowLayoutPanel1.Controls[i].Dock = DockStyle.Top; 
     } 
     flowLayoutPanel1.Controls[0].Width = flowLayoutPanel1.DisplayRectangle.Width - flowLayoutPanel1.Controls[0].Margin.Horizontal; 

    } 

關鍵是要使用Layout事件。

這個解決方案對我來說很重要。您的UserControl必須關閉AutoSize /保持統一大小。

在我的情況下,我想AutoSize打開,以便允許用戶控件垂直展開/收縮,同時填充FlowLayoutPanel的寬度。我不得不尋找一個不同的解決方案。但上述可能會幫助你的情況。

+0

感謝你的兄弟^ _^ 我設法通過改變控件的大小,當FlowLayoutPanel的大小改變時,模擬它: 我知道它可能不是最好的解決方案,但它做的工作:D – Hasan

相關問題