#c# #winforms #scrollbar #flowlayoutpanel
#c# #winforms #полоса прокрутки #flowlayoutpanel
Вопрос:
У меня есть FlowLayoutPanel, и на ней есть несколько элементов управления. Я хочу прокручивать только в вертикальном направлении. Но когда я установил AutoScroll = true
, я получил как вертикальную, так и горизонтальную полосы прокрутки. Как я мог отключить горизонтальную полосу прокрутки и поддерживать работу только вертикальной полосы прокрутки?
Ответ №1:
- Установите для автоматической прокрутки значение true
- Установите для WrapContents значение false.
- Убедитесь, что размер больше ширины элементов управления плюс ширина вертикальной полосы прокрутки.
Горизонтальная полоса прокрутки должна исчезнуть. Если это не так, пожалуйста, предоставьте дополнительную информацию.
Комментарии:
1. Спасибо за это! Только сейчас я играю с этим и обнаруживаю, что если я установил FlowDirection =leftToRight, FlowLayoutPanel. HorizontalScroll.Visible = false, wrapContents = true. Это работает… Итак, есть несколько способов сделать это? В любом случае спасибо! 🙂
2. Я заметил, что включение WrapContents (с потоком LeftToRight) создаст «перевод строк» и, следовательно, никогда не потребует горизонтальной полосы прокрутки. на самом деле мне это не нравится, я хочу, чтобы значение WrapContents было равно false, но я все еще хочу, чтобы свойство FlowBreak работало, чтобы вручную управлять переводом строк. Однако это не работает. Свойство FlowBreak игнорируется из-за явной ошибки этого элемента управления, если значение WrapContents равно false. ого, Microsoft. еще раз.
3. Я использую WrapContents. Для достижения желаемого результата я заключил свою FlowLayoutPanel в элемент управления Panel, затем установил для автопрокрутки панели значение true, для автопрокрутки FlowLayoutPanel значение false, и это работает!
Ответ №2:
Установите для автоматической прокрутки значение true. Установите для WrapContents значение false. Установите отступ справа на 10.
Для меня это работает довольно хорошо.
Комментарии:
1. Я подумал «ни в коем случае, это не может работать», но да, правильное заполнение сделало трюк: S
2. Этот трюк сработал. Единственное, в зависимости от размера шрифта дочернего элемента управления вам придется настроить отступы.
3. как насчет отключения вертикальной полосы прокрутки вместо необходимой горизонтальной полосы прокрутки? @пользователь2559770 ?
Ответ №3:
Вот как я реализую, чтобы на FlowLayoutPanel было несколько меток с переносным текстом (WrapContents = true), только с вертикальной полосой прокрутки.
- У меня есть flowLayoutPanel1 в форме
- Установите свойства form и flowLayoutPanel1, как показано ниже:
форма:
AutoScroll = True
FormBorderStyle = Sizable(default)
flowLayoutPanel1:
Anchor = Top, Left, Right
AutoSize = True
FlowDirection = TopDown
WrapContents = true
- Реализуйте этот код в классе form для тестирования
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;
}
}