How to disable horizontal scroll bar in FlowLayoutPanel?
Asked Answered
S

3

24

I have a FlowLayoutPanel and there are multiple controls on it. I only want to scroll in vertical direction. But when I set AutoScroll = true, I got both Vertical and Horizontal Scroll bars. How could I disable the horizontal scroll bar and only keep the vertical scroll bar working?

Swage answered 5/4, 2011 at 18:21 Comment(0)
C
65
  • Set AutoScroll to true
  • Set WrapContents to false.
  • Make sure the size is wider than the controls' width plus the width of a vertical scrollbar.

The horizontal scrollbar should disappear. If it doesn't, please provide some more information.

Cima answered 5/4, 2011 at 18:27 Comment(3)
Thanks for this! Just now I play with it and I find if I set flowDirection=leftToRight, flowlayoutPanel.HorizontalScroll.Visible = false, wrapContents = true. It works...So there is multiple way to do this? Thank you anyway! :)Swage
I have noticed that enabling WrapContents (with LeftToRight flow) will create "line feeds" and thus never needing any horizontal scroll bar. actually I dont like that, I want a WrapContents to false, but I still want FlowBreak property to work, to control manually the line feeds. However this doesn't work. FlowBreak property is ignored, by a sheer bug of that control, if WrapContents is false. booh microsoft. yet again.Colonel
I am using WrapContents. To achieve the result I want, I have enclosed my FlowLayoutPanel in a Panel control, then I set the Panel's AutoScroll to true, the FlowLayoutPanel's autoscroll to false, and it works!Hotshot
Y
5

Set AutoScroll to true. Set WrapContents to false. Set Padding Right to 10.

It's work pretty fine for me.

Yardage answered 25/3, 2016 at 13:4 Comment(3)
I thought "no way, it can't work", but yeah, the padding right made trick :SAstrix
This trick worked. Only thing is, based on child control's font size you will have to adjust padding.Lowbrow
how about disabling the verticalscrollbar instead of the horizontalscrollbar needed? @Yardage ?Eldreeda
P
-1

Here is how I implement to have multiple labels on a FlowLayoutPanel with wrap text(WrapContents = true), verticalscrollbar only.

  1. I have a flowLayoutPanel1 on a form
  2. Set properties of form and flowLayoutPanel1 like below:

form:

AutoScroll = True
FormBorderStyle = Sizable(default)

flowLayoutPanel1:

Anchor = Top, Left, Right
AutoSize = True
FlowDirection = TopDown
WrapContents = true
  1. Implement this code on form class for testing

int coorY = 0;
        public Form2()
        {
            InitializeComponent();
            for (int i = 0; i < 100; i++)
            {
                flowLayoutPanel1.Controls.Add(new Label 
                { 
                    Location = new Point(0, coorY + 20),
                    Font = new Font("Segoe UI", 10f),
                    Text = "I have a FlowLayoutPanel and there are multiple controls on it. I only want to scroll in vertical",
                    Width = flowLayoutPanel1.Width,
                    AutoSize = true
                });
                coorY += 20;
            }
        }

Vertical scrollbar in action

Pituri answered 1/6, 2021 at 3:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.