В окне списка, как я могу получить ширину списка минус пространство, занимаемое полосой прокрутки? - PullRequest
5 голосов
/ 05 августа 2011

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

Сейчас я получаю ширину с помощью свойства Width и сравниваю ее с результатом MeasureText со строкой и шрифтом в качестве аргументов.

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

Итак, как мне узнать:

  1. если в списке отображается полоса прокрутки
  2. ширина списка без полосы прокрутки

Полагаю, 2 будет решено, если полоса прокрутки займет одну и ту же ширину пикселя, независимо от того, какая версия Windows или какая конфигурация дисплея используется. Кто-нибудь знает, правда это или нет?

1 Ответ

5 голосов
/ 05 августа 2011

Вы можете использовать ListBox.ClientRectangle.Width, чтобы получить внутреннее пространство, используемое элементом управления.

Если ScrollBar виден, возвращаемое значение ширины будет внутренней шириной за вычетом ширины ScrollBar, так что вы можете с ней сравниться.

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