Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scrollable Form in c#, AutoScroll=true doesn't work

Tags:

c#

forms

scroll

What are the rules which I have to respect to make the Form scrollable...

I simple set the Property AutoScroll to true. I also tried while Auto Scroll is true, to set AutoSize to true/false, but none of these worked... also tried to put Panel and added all components in there... still nothing...

Maybe using V or HScrollBar can help, but i really don't know how to link it with the Form...

form.AutoScroll = true;
formMainLayout.AutoScroll = true;
rootPanel.AutoScroll = true;
like image 239
jovanMeshkov Avatar asked Jul 22 '13 13:07

jovanMeshkov


3 Answers

The content controls the scrolling. The scrollbars do not appear unless they are needed. Usually, there is a property available that you can set to force them to be visible always, and simply disabled until needed.

The AutoScroll property must be true, as you have already found. But then the content of the scrollable control must force the parent control to display the scrollbars. This part is up to how the controls are embedded within the parent.

Try these two experiments:

  1. Place a Panel on your form and dock it to Fill. Set the AutoScroll property of the Panel to true. Into that panel, place a TextBox and set it to dock as Fill as well. Also set MultiLine to true. Run the application, and you will notice that the size of both is simply using the available space...no scrolling can occur because neither the Panel, nor its TextBox become larger than the space they occupy.

  2. Perform the same steps as in #1, but this time, do not dock the TextBox. Instead, set it to a large size, something that you know will be larger than the amount of Panel that is visible. Running the application should now produce a scrolling Panel.

Hopefully this little test helps to demonstrate what is controlling the scroll on a form.

like image 85
DonBoitnott Avatar answered Sep 28 '22 21:09

DonBoitnott


I was also having the same problem, I managed to fix it... All the child controls inside the panel had a Left & Right anchor, and when I only set the anchor to Top, the scrollbars where working fine.

I am not sure as to why the Left and Right anchor (of the child controls) forces the panel not to show scrollbars.

But anyways... hope this will help anyone as of this date.

like image 26
Sean Avatar answered Sep 27 '22 21:09

Sean


The AutoScroll property should work fine, but most likely you are not using it right: the bar appears only when required. Example: minimum Y of the Form is 0 and minimum Y of one of the controls in it (a TextBox) is -20.

If you want to include a scroll bar no matter what (controls inside the boundaries of the form or not), you can also do it. Sample code (from MSDN) for a vertical scroll bar:

// Create and initialize a VScrollBar.
VScrollBar vScrollBar1 = new VScrollBar();

// Dock the scroll bar to the right side of the form.
vScrollBar1.Dock = DockStyle.Right;

// Add the scroll bar to the form.
Controls.Add(vScrollBar1);
like image 37
varocarbas Avatar answered Sep 25 '22 21:09

varocarbas