Итак, в winforms у каждого выпадающего списка есть эта маленькая стрелочка справа, которая сообщает пользователю о выпадающем списке, вроде этого:
Теперь, как мне понять, насколько широка эта цифра? Причина в том, что я использую ControlDrawToBitmap, это неправильно рисует текст для полей со списком, и я могу перерисовать содержимое, я просто ударяю некоторые из стрелок (которые рисуются правильно).
Первая идея, которая приходит на ум: проверьте, соответствует ли ширина кнопки со списком ширины полосы прокрутки. Ширина полосы прокрутки может быть изменена в пользовательских настройках. Используйте API GetSystemMetrics(), чтобы получить ширину различных элементов прокрутки. Если вы измените ширину полосы прокрутки вашей системы и не повлияет на размер обычной выпадающей надписи, тогда проигнорируйте это.
Вторая идея: используйте форматирование управления редактированием, чтобы узнать, что думает элемент управления редактирования, является полезной областью отображения (минус поле со списком). См. EM_GETRECT в MSDN.
Однако, похоже, что это всего лишь обходное решение для вашей реальной проблемы: если вы можете заставить элементы управления правильно рисовать растровые изображения, вам не понадобится этот хакер.
Я вычислил ширину 9 пикселей в фотошопе