2016-08-31 13 views
1

私はC#.NET 3.5デスクトップアプリケーションを開発中です。私はFormを持っていて、TableLayoutPaneltp1を含んでいます。 tp1の2行目にはGroupBoxが含まれています。 GroupBoxには別のTableLayoutPaneltp2が含まれています。 tp2は実行時に動的に増加します。動的コンテンツ用の自動スクロールWindowsフォーム

Form 
----------------------------- 
| TableLayoutPanel tp1  | 
|____________________________| 
| GroupBox    | 
| ________________________| 
| |      | 
| | TableLayoutPanel tp2 | 
| | ______________________| 
| | |      | 
| | | Dynamic content | 
| | |  here   | 
| | |      | 
| | |______________________| 
| |________________________| 
|       | 
|____________________________| 
----------------------------- 

Formの自動スクロールはtrueです。

行2のSizeTypeは、tp1はAutoSizeです。

GroupBoxのAutoSizeはtrueです。

AutoSizeがtp2であること。 tp2は、動的に次のコードによって更新されます

tp2.RowCount = tp2.RowCount + 1; 
tp2.RowStyles.Add(new RowStyle(SizeType.AutoSize)); 

GroupBox gb = new GroupBox(); 
gb.BackColor = Color.Red; 
tp2.Controls.Add(gb, 0, tp2.RowCount - 1); 

私はtp1がウィンドウサイズよりも大きい場合、スクロールバーがFormに表示したいです。しかし、スクロールバーは表示されません。

tp1のAutoScrollをtrueに設定すると、同じ方法でスクロールバーをアクティブにできます。しかし、のスクロールバーは、tp1ではありません。

どうすれば実現できますか?

答えて

2

あなたは、デザイナーやコードを使用して、このような設定を実行する必要があります。

var panel1 = new TableLayoutPanel(); 
panel1.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single; 
panel1.RowCount = 2; 
panel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 20)); 
panel1.RowStyles.Add(new RowStyle(SizeType.AutoSize)); 
panel1.AutoSize = true; 
panel1.AutoSizeMode= System.Windows.Forms.AutoSizeMode.GrowAndShrink; 

var groupBox1 = new GroupBox() { Text = "GroupBox" }; 
groupBox1.AutoSize = true; 
groupBox1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; 

var panel2 = new TableLayoutPanel() {Top= 24, Left= 5 }; 
panel2.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single; 
panel2.AutoSize = true; 
panel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; 

groupBox1.Controls.Add(panel2); 

panel1.Controls.Add(new Label() { Text = "Label" }); 
panel1.Controls.Add(groupBox1); 

this.SuspendLayout(); 
this.Controls.Add(panel1); 
this.AutoScroll = true; 
for (int i = 0; i < 10; i++) 
{ 
    panel2.RowCount += 1; 
    panel2.RowStyles.Add(new RowStyle(SizeType.AutoSize)); 
    panel2.Controls.Add(new GroupBox() 
    { 
     Text = string.Format("GroupBox{0}", i + 1) 
    }); 
} 
this.ResumeLayout(true); 

そして、これは、結果、次のようになります。私は私の問題は、この答えの前に道を解決してしまった

enter image description here

+0

。しかし、答えをありがとう。 – Donotalo

+0

素晴らしい!あなたは歓迎してフィードバックに感謝:) –

関連する問題