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;
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:
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.
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.
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.
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With