我在我的一个项目中发现了这个奇怪的问题。问题的确切原因是SystemInformation.FrameBorderSize返回不同的值取决于应用程序是否在 VS2012 中在调试器下运行。我正在使用以下测试:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
this.label1.Text = SystemInformation.FrameBorderSize.ToString();
}
}
在调试器下它返回错误的大小(4,4)
,但不是在调试器下它返回正确的值(8,8)
。相关的 WinAPI 调用 ( GetSystemMetrics ) 得到相同的(不正确的)结果。
更新:
当项目的目标框架设置为“.Net Framework 3.5 客户端配置文件”并进行调试时,我们得到不正确的结果 (4,4)。当目标框架是“.Net Framework 4.5”时,无论是否调试,我们总是得到不正确的结果(4,4)。
有人会告诉我为什么会发生这种情况(此代码在同一台机器上的 VS2010/VS2008/VS2005 下正常工作)?VS2012 调试器或 .Net Framework 版本如何影响系统指标?