Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make scrollbars appear in a resizable panel when the contained control is too big for it?

I am developing a Windows Forms application (.NET 2.0, VS 2005). I have a form that essentially contains a panel that is dynamically resized with the form :

this.panel1.Dock=DockStyle.Fill;

This panel is simply used as a container. At runtime, a custom control will be added :

UserControl uc=new UserControl();
panel1.Controls.Add(uc);
uc.Dock=DockStyle.Fill;

As this custom control has a minimum size requirement, I want scroll bars to appear on the containing panel if it gets too small to show the entire control :

this.panel1.AutoScroll=true;

This does not work. I have tried to resize the panel using the Anchor property rather than the Dock property, to no avail.

like image 711
Mac Avatar asked Aug 03 '09 14:08

Mac


People also ask

How do I add a ScrollBar in winform?

Just set the AutoScroll property of your Panel to true and it will handle adding the scrollbars for you.

How do I control the scroll bar?

The scroll-bar control sends a notification message to its parent whenever the user clicks the mouse in the control. The parent is responsible for updating the scroll-box position. Scroll-bar controls can be positioned anywhere in a window and used whenever needed to provide scrolling input.


2 Answers

Don't Dock your User control. Use the Anchor property instead. (Anchor to all four sides). Set you User control's MinimumSize property Set the panel's AutoScrollMinSize property

The Panel's scrollbars won't appear unless you set its AutoScrollMinSize property. Setting the user control's Dock to Fill seems to hide the panel's scrollbars.

like image 199
NascarEd Avatar answered Sep 28 '22 09:09

NascarEd


After InitializeComponent in the dialog form, I did this and it seemed to work:

tableLayoutPanel1.AutoScrollMinSize = tableLayoutPanel1.GetPreferredSize(new Size(1, 1));

I have a bunch of subpanels in the table. All the rows and columns are set to AutoSize. For some reason, the control is not smart enough tell the scroll control it's preferred size.

like image 37
Mark Lakata Avatar answered Sep 28 '22 10:09

Mark Lakata