2012-06-20 30 views
0

我有一個自動滾動的TableLayoutPanel,我在其中動態添加行。我希望每行的高度爲TableLayoutPanel的可見區域的1/3,即面板的原始高度,然後在添加第四個面板和自動滾動後展開。我可以計算手動觸及行的高度並將其設置爲絕對高度,但可以調整TableLayoutPanel的大小。在這種情況下,我可以處理調整大小的事件並重新計算每行的絕對高度,但我想知道是否有更好的方法。是否有某種方法可以將行高指定爲可見面板區域的百分比,還是應該執行手動計算,絕對高度路線?基於可見區域百分比的自動滾動的TableLayoutPanel高度

+1

'回答了類似的問題' - http://stackoverflow.com/a/11051278/763026。代碼存在於github回購(參見問題/回答評論)中。 –

回答

1

我結束了我實現需要一個自上而下的FlowLayoutPanel的東西,掛靠頂,下,左,右,使其與窗體調整大小。第一個子面板添加到FlowLayoutPanel中,並且分配的寬度略小於FLP的寬度。每個後續的子面板都有一個Dock填充樣式,以便其寬度自動匹配第一個面板。每個面板的高度均爲FLP.Height/3,並且我有一個FLP調整大小事件的處理程序,以根據需要重新計算子面板的高度。

感謝所有評論和回答的人。我對你的答案大加讚賞,因爲他們會對別人有所幫助,只是沒有解決我的問題。

2

TableLayoutPanel.RowStyle.Percent

行高被解釋爲表的高度

的百分比。如果你有一個表2行,面板每次取50% - 並希望增加第三,所有調整到33%:

tableLayoutPanel1.RowCount = 3; 
    this.tableLayoutPanel1.RowStyles[0].Height = 33F; 
    this.tableLayoutPanel1.RowStyles[1].Height = 33F; 
    this.tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 33F)); 
+0

這適用於前3,但我的問題是,當我添加第四行如果AutoSize == true,TLP擴展,並有四個均勻大小的行(無滾動條)。如果AutoSize == false,則前三個的高度保持不變,但第四個面板不可見。 AutoScroll == true,但不顯示滾動條。我希望滾動條出現,每行都是可見區域高度的1/3。 – tronbabylove

+0

此外,實驗後仍然沒有解決添加第四個面板時尺寸發生變化這一事實。我不希望每行都達到高度的33%,而是希望它達到可見高度的33%。 – tronbabylove

+1

@tronbabylove將表格放置在AutoScroll = true的主機面板中,這是您想要的可見區域的高度。行數是面板高度的三分之一 - 隨着TablePanel的增長,面板將處理所有滾動條問題。 –

相關問題