WinForms - Как вы получаете размер, который «элемент управления» хочет? - PullRequest
7 голосов
/ 14 апреля 2009

Когда Control закреплен в контейнере (например, Panel) и слишком широк для отображения (поэтому появляется полоса прокрутки), Control.Width, кажется, возвращает видимую ширину элемента управления (верх стрелка на картинке).

Как вы получаете ширину, которой "хочет" быть элемент управления? то есть его полная ширина, которую вы бы увидели, если бы вам не приходилось выполнять прокрутку (нижняя стрелка на рисунке).

альтернативный текст http://img19.imageshack.us/img19/372/size.png

Ответы [ 3 ]

9 голосов
/ 14 апреля 2009

Существует два разных свойства элементов управления, которые могут оказаться полезными для этой цели. Существует DefaultSize, который является размером элемента управления при его первоначальном создании, а затем есть PreferredSize, который является размером, в который может вписаться элемент управления. Все элементы управления имеют эти свойства, и PreferredSize должен быть тем, который вы ищете.

8 голосов
/ 14 апреля 2009

Bounds - это фактический размер, нарисованный на

ClientSize - размер минус любые полосы прокрутки

Control.PreferredSize это то, что вы хотите

1 голос
/ 08 марта 2012

Control.HorizontalScrollbar.Maximum или Control.VerticalScrollbar.Maximum должны возвращать максимальный требуемый размер. Он может вернуть немного небольшую сумму, так как может отрезать отступы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...