Использование VS2010 и .NET 4.0 с C # и WinForms:
Я всегда хочу, чтобы вертикальная полоса прокрутки отображалась для моей панели как отключенная полоса прокрутки (когда она не нужна, и как активная, когда ее можно использовать.
Так что это как гибрид AutoScroll. Я пробовал использовать VScrollBars, но не могу понять, где их разместить, чтобы эта работа работала.
По сути, у меня есть пользовательский элемент управления, который действует как «Документ» элементов управления, его размер меняется, поэтому при использовании автопрокрутки он работает отлично. Полоса прокрутки появляется, когда элемент управления пользователя не подходит, и пользователь может переместить его вверх.
По сути, это похоже на веб-браузер. Однако перерисовка элементов управления занимает много времени (это формы с множеством полей и кнопок и т. Д. В группах в сетке на панели: P
Так или иначе, когда автопрокрутка включает вертикальную полосу прокрутки, перерисовка окна занимает некоторое время. Я хотел бы ВСЕГДА показывать вертикальную полосу прокрутки, как указано выше (с функцией включения / отключения).
Если у кого-то есть помощь, я прочитал много сообщений по теме автопрокрутки, но никто не спросил, о чем я прошу, и я не могу придумать решение.
WS_HSCROLL
иWS_VSCROLL
уже безнадежно испорчена в Win32 API (и это то, что используется вScrollableControl
). Даже если вы попытаетесь исправить это на этом уровне, он будет полон глюков; Windows настаивает на получении контроля над полосами прокрутки. Ответы, размещенные здесь, в лучшем случае хрупкие и будут вызывать нежелательные побочные эффекты, такие как мерцание или проблемы с макетом. Если вы хотите сделать это правильно, вам придется самому написать много кода. - person dialer   schedule 08.02.2021