Я думаю, что есть ошибка в System.Windows.Forms.VisualStyles.VisualStyleRenderer.GetPartSize()
.
Найдена по этой ссылке .Я создал образец консольного приложения, которое вызывает этот метод и выводит ширину и высоту возвращаемого объекта Size на консоль.Ниже приведены некоторые результаты нашего офиса:
- Vista: ширина = 20, высота = 21
- XP: ширина = 15, высота = 20
- Win7: ширина= 7, высота = 21 <--- указана неправильная ширина </li>
Код показан ниже:
var element = VisualStyleElement.ComboBox.DropDownButton.Normal;
var renderer = new System.Windows.Forms.VisualStyles.VisualStyleRenderer(element);
var control = new Control();
using (var gr = control.CreateGraphics())
{
var size = renderer.GetPartSize(gr, ThemeSizeType.True);
Console.WriteLine(String.Format("Width={0},Height={1}", size.Width, size.Height));
}
Я не могу найти в Интернете ничего, что указывало бы на то, чтоэто известная проблема.Есть ли основания подозревать, что это не так?!
Что более важно, вы считаете безопасным просто проверить, является ли ОС Win7, и вместо этого вернуть правильный размер?