我認爲在System.Windows.Forms.VisualStyles.VisualStyleRenderer.GetPartSize()
中有一個錯誤。win7中的Windows.Forms.VisualStyles.VisualStyleRenderer.GetPartSize()中的可疑錯誤
通過此發現link。我創建了一個調用此方法的示例控制檯應用程序,並將返回的Size對象的寬度和高度打印到控制檯。下面是我們的一些辦公室的結果:
- Vista的:寬= 20,身高= 21
- XP:寬= 15,身高= 20
- Win7的:寬= 7,高度= 21 < - - 返回的寬度是錯誤的
的代碼如下所示:
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));
}
我不能在網路上找到任何東西表明這是AK未知的問題。任何理由懷疑它不是?!
更重要的是,你認爲只檢查操作系統是否爲Win7並返回正確的大小是安全的?
但是高度不是21像素嗎?!仍然不確定爲什麼在XP上它的15x16,Vista 20x21和Win7 7x21 - 這個比例都是錯誤的...... – JohnBarton
Erm,你接受了'這是一個錯誤'的答案。我向你展示瞭如何達到18x21的測量。如果你不想使用它,那麼祝你好運。 –
對不起,我當時並沒有真正讚賞你的答案。回過頭來看,是的 - 你確實回答了我的問題,並給了我一個解決方法。非常感謝。 – JohnBarton