私のプロジェクトの1つで奇妙な問題が見つかりました。この問題の正確な理由は、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 のバージョンは、システム メトリックにどのように影響しますか?