2014-01-27 2 views
1

Я просто хочу изменить размер элемента управления в панели в определенный момент, когда появляется вертикальная панель ScrollBar панели из-за необходимости прокрутки.Как заметить, когда ScrollBar появляется на панели? VB.Net

Panel.Resize или Panel.SizeChanged не совсем то, что я хотел, потому что он вызывается всякий раз, когда размер панели изменяется, а не точная точка, когда изменяется размер панели из-за того, что панель получает ширину полосы прокрутки ,

+0

Как правило, это не очень хорошая идея. Большинство пользователей находят, что это раздражает/отвлекает, чтобы элементы управления меняли свой размер только потому, что появилась полоса прокрутки. Обычно вы просто держите элементы управления из области прокрутки. –

ответ

1

Событие ClientSizeChanged будет срабатывать. Вы можете обнаружить, что полосы прокрутки стал видимым с кодом, как это:

Private Sub Panel1_ClientSizeChanged(sender As Object, e As EventArgs) Handles Panel1.ClientSizeChanged 
    If Panel1.VerticalScroll.Visible Then 
     '' etc... 
    End If 
End Sub 

Учтите, что событие будет срабатывать несколько раз. Если вы сделаете что-нибудь, чтобы переставить элементы управления, чтобы снова сделать невидимую полосу прокрутки, остерегайтесь того, что вы вызовете очень заметное мерцание.

Поскольку обычно нет ничего, что могло бы сделать пользователь, чтобы изменить размеры элементов управления, только ваш код делает это, гораздо лучшей альтернативой является активное предотвращение показа полосы прокрутки.

Смежные вопросы