【发布时间】:2012-10-12 10:04:44
【问题描述】:
我在我的一个项目中发现了一个奇怪的问题。问题的确切原因是 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) 得到相同的(不正确的)结果。
更新:
当项目的 Target Framework 设置为“.Net Framework 3.5 Client Profile”并进行调试时,我们得到不正确的结果(4,4)。
当目标框架是“.Net Framework 4.5”时,无论是否调试,我们总是得到不正确的结果(4,4)。
有人能告诉我为什么会发生这种情况(此代码在同一台机器上的 VS2010/VS2008/VS2005 下正常工作)吗? VS2012 调试器或 .Net Framework 版本对系统指标有何影响?
【问题讨论】:
-
在这两种情况下我都会得到
(4, 4)。 -
@LarsTech:正确的值是 (8,8)。当项目的 Target Framework 设置为“.Net Framework 3.5 Client Profile”时,我们得到不正确的结果。当目标框架为“.Net Framework 4.5”时,我们总是得到 (4,4)。
-
“正确”值是您的主题设置的值。我使用的系统是 5,5,和 Lars 一样,我在调试器下没有得到不同的值。
标签: .net winforms debugging visual-studio-2012