Рисование кнопки на панели winform при прокрутке панели

На панели я рисую элементы управления, такие как кнопка / текстовое поле, начиная с (0,0) на панели. Эти элементы управления невидимы и отключены в начале. У меня есть кнопка за пределами панели, которая делает эти кнопки / текстовые поля видимыми при нажатии и помещает их в новое место на панели.

Проблема в том, что если пользователь прокрутил панель до некоторого (x,y), а затем нажал кнопку "сделать видимым", новое (x,y) расположение кнопки рассчитывается из текущего (x,y) местоположения панели - не сверху (0,0) панели.

Мне интересно, если это правильное поведение панели и что, чтобы исправить это, мне нужно рассмотреть this.VerticalScroll.Value как (x,y) смещение, когда я переставляю кнопки.

введите описание изображения здесь

2 ответа

Это то, что сработало для меня. Когда вы получаете кнопку Y / текстовое поле и т.д., сделайте:

relativeControlTop = theControl.Top - thePanel.AutoScrollPosition.Y;

Когда вы устанавливаете верх сделать:

relativeControlTop = theControl.Top + thePanel.AutoScrollPosition.Y;

Надеюсь это поможет.

Не уверен, поможет ли это в вашей ситуации, но я думаю, что стоит попробовать:

Если вы разрабатываете Panel с использованием Visual Designer, я рекомендую использовать две панели: полноразмерную, содержащую все элементы управления, ее размер позволяет легко проектировать; и меньший, который имеет предполагаемый физический размер. Затем просто добавьте большой как единственный дочерний элемент меньшего (например, innerPanel в bottomPanel).

См. Эту статью Article: WinForms AutoScroll Experiment для более подробной информации.

Другие вопросы по тегам