Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как определить полный размер панели (включая полосы прокрутки) в С#

Автор вопроса: utterly_confusedОтветов: 2

У меня проблема с панелью, которая начинается с размера 200x200 пикселей. Для программы, которую я пишу, в любой момент времени мне нужно знать, насколько велика эта панель, но это усложняется, поскольку автопрокрутка включена, и когда вставляется большой контент, панель расширяется (и появляются полосы прокрутки).

Я немного просмотрел AutoScrollPosition и AutoScrollOffset и даже попытался реализовать это в своем решении, но, похоже, это только сообщает вам информацию о панели, когда полоса прокрутки находится в определенной позиции, тогда как в любой момент времени мне нужно знать общий размер панели.

Итак, предположим, что какой-то контент был введен на панель, и с учетом расстояния прокрутки он действительно стал панелью размером 600x750 пикселей. Кто-нибудь знает, как я могу получить эту информацию?

Спасибо

  • Это приложение WPF? sll 29.07.2011
  • Мой ответ был основан на предположении, что свойства для этого нет, а оказывается есть: PreferredSize. Igby Largeman 30.07.2011

canvasscrollwinformspanel

Ответы

Ответ 1 · рейтинг 4 · Hans Passant

Предложение "включая полосы прокрутки" делает вопрос без ответа. Поскольку полосы прокрутки применяются только к DisplayRectangle.

Вы можете получить требуемый размер панели, чтобы не было полос прокрутки, из свойства PreferredSize. Вы можете получить высоту и ширину полос прокрутки из свойств SystemInformation.HorizontalScrollBarHeight и VerticalScrollBarWidth.

Ответ 2 · mbeckish

Когда содержимое Panel больше, чем его ClientSize, тогда AutoScrollMinSize должен быть эквивалентен прокручиваемой области Panel.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы