TableLayoutPanel displays vertical scroll

c#, scrollbar, tablelayoutpanel, vertical-scroll, vertical-scrolling

Solution

The problem concerns TableLayoutPanel scrolling. You have to use a Panel for scrolling instead of TableLayoutPanel. Here is an example to solve this problem (for vertical scrolling) :

- Set your TableLayoutPanel properties as follow :

- Dock = DockStyle.Top

- AutoSize = true

- AutoSizeMode = AutoSizeMode.GrowAndShrink

- AutoScroll = false.

- Put your TableLayoutPanel into a Panel with properties :

- Dock = DockStyle.Fill

- AutoScroll = true

- AutoSize = false.

Problem

I have TableLayoutPanel for dynamic creation of controls with AutoScroll = true. It's work fine when I add new controls. But when I remove and all controls are visible, vertical scroll is visible. Some screenshots here: Expected/correct scroll visibility: Incorrect visibility: Any ideas? Update: Here is some code ``` tableLayoutPanel1.SuspendLayout(); tableLayoutPanel1.RowCount = 0; tableLayoutPanel1.RowStyles.Clear(); tableLayoutPanel1.AutoScroll = true; tableLayoutPanel1.Padding = new Padding(0, 0, SystemInformation.VerticalScrollBarWidth, 0); foreach (var item in objects) { tableLayoutPanel1.RowCount++; tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize)); tableLayoutPanel1.Controls.Add(CreateNewItem(item)); } tableLayoutPanel1.RowCount++; tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize)); tableLayoutPanel1.Controls.Add(CreateAddButton()); tableLayoutPanel1.ResumeLayout(); ``` and code for deleting ``` tableLayoutPanel1.SuspendLayout(); tableLayoutPanel1.Controls.Remove(item); tableLayoutPanel1.RowStyles.RemoveAt(0); tableLayoutPanel1.RowCount--; tableLayoutPanel1.ResumeLayout(); ``` AutoSize is true, AutoSizeMode is GrowAndShrink

Original source

Related problems