Managing Autoscroll - c#

My Project is currently in C# Winforms.
I have a custom control that I am inserting on a flow layout panel.
I also have a header that fits above the Flow Layout.
I would like the flowlayout to scroll on the vertical axis while the whole panel scrolls along the horizontal axis.
The problem I am having is that the flowlayout when autoscroll is set to true makes use of both horizontal and vertical scroll
I need the header to scroll horizontally at the same time as the flowlayout but not show its own horizontal scrollbar. I also need the header to stay at the top of the Panel when the flowlayout scrolls vertically.
Thanks for the help
I have been trying out different combinations of autoscroll, wrapcontents and Autosize.

Related

Make a Scrollviewer not vertically scrollable

I have a ScrollViewer which I don't wish to be scrollable vertically. I have its VerticalScrollBarVisibility set to Hidden, but I can still scroll with the mouse wheel.
Is it possible?
Set VerticalScrollBarVisibility to Disabled, and its content will only be given as much vertical space as exists in the viewport.
A value of Hidden still allows the content to extend beyond the viewport, and you can still issue scrolling commands; the scroll bar itself is hidden, but scrolling is not disabled.

Adding a vertical scrollbar to a panel if drawn area is too large

I'm using WinForms and C#.
The application I am developing draws rows of rectangles (using g.DrawRectangle()) inside of a panel. The panel can hold 6 rectangles in width (I don't want to have horizontal scrolling). I control this within the application by counting the rectangles in the row, and then adding to the y value after the sixth rectangle.
Vertically, I want to be able to add infinite rectangles and scroll down to see them. Right now, the rectangles are being added, but the Panel doesn't scroll (they are just added off screen).
Is there a way to add a vertical scrollbar? I have tried setting the AutoScroll property to true, but that doesn't do anything.
The problem is that you are using graphics to draw on the panel. These are not controls, so they don't cause the panel to grow. you should create two panels - PanelA contains PanelB. PanelA has AutoScroll=true, but you draw on PanelB. As you draw, you also set the height of PanelB, so that when it gets bigger than PanelA, PanelA gets a scroll bar.

WinForms: How to avoid horizontal scroll bar with AutoScroll?

I'm writing a custom control that contains a list of items (child controls) that resize horizontally to fit the width of the control. If there are lots of items (or the control is resized so that it is not tall enough vertically) then a vertical scroll bar is necessary; but when the vertical scroll bar appears, the child controls are suddenly too wide, which causes a horizontal scroll bar to appear.
What's the proper way to guarantee that a horizontal scroll bar does not appear when it is not necessary, given that I am controlling the control placement manually (not relying on AnchorStyles)? (Note: I can't control the VScroll property manually because I'm on Compact Framework; and if an item's minimum width is wider than the client area then a horizontal scroll bar will be required legitimately.)
What I did in a similar situation was after every time I added an item to the list I detected whether the scroll bar was visible or not and adjusted my the width manually.
What I did to detect whether the scroll bar was showing was either:
Test for the WS_VSCROLL was set on the control via P/Invoke via GetWindowLong().
Scan the control's children for a vertical scroll bar control.
It depends on how the control handles scroll bars as to which one is correct.
Also this was on Windows, not in the CF so I'm not sure if this will work exactly the same way.
Take the width of the vertical scrollbar into account when calculating the required width for your child controls:
System.Windows.Forms.SystemInformation.VerticalScrollBarWidth

scroll in usercontrol

In windows forms
I want to activate scroll to my usercontrol,
i activated autoscroll,
but the horizontal scroll is not appearing.
i have kept my control n tablelayout panel..
Help me for the horizontal scroll..
AutoScroll means that the scrollbar(s) will appear when some content sticks out of the Client Area. When you use a TableLayout (with Docking = Fill) then the AutoScroll does not kick in.
Turn of Docking for the TableLayout and set its Width/Height larger than the Form. You will see AutoScroll in the Designer.

Scrollbar does not appear on Panel when lines drawn on it (C#)

I want to draw some lines and rectangles on a panel. Sometimes it does not fit in panel
and I want the scroll bar to appear. I set AutoScroll property to true, but it doesn't work ;(
Set the panel's AutoScrollMinSize property to a something larger than the panel's real dimensions (for example, if your panel is 300 x 200, set the AutoScrollMinSize property to 900 x 600). This will cause both scrollbars to appear, and you should be able to draw on the larger surface.
You will need to tell the panel control that you are drawing outside of the visible bounds by setting the AutoScrollMinSize property. But another, perhaps simpler, solution would be to have your panel contain another panel control in which you do the drawing. Then you can simply resize that inner panel to fit your drawing and the outer panel will automatically provide the scrolling as necessary.

Categories

Resources