|
■No73452 (松岡 さん) に返信
> 保存時に取得した数値を表示したところ、実行する度に横幅が+8,高さが+27追加されていきます。
法則性が見えてきましたね。
手元の環境では現象を再現できなかったため、確証は無いのですが、
下記の内容に、「横幅が+8,高さが+27」に関連する数値が含まれていたりはしないでしょうか。
string s = " Size = " + this.Size.ToString();
s += "\r\n Bounds.Size = " + this.Bounds.Size.ToString();
s += "\r\n DesktopBounds.Size = " + this.DesktopBounds.Size.ToString();
s += "\r\n ClientSize = " + this.ClientSize.ToString();
s += "\r\n ClientRectangle.Size = " + this.ClientRectangle.Size.ToString();
s += "\r\n---------------------------";
s += "\r\n CaptionHeight = " + SystemInformation.CaptionHeight.ToString();
s += "\r\n BorderSize = " + SystemInformation.BorderSize.ToString();
s += "\r\n Border3DSize = " + SystemInformation.Border3DSize.ToString();
s += "\r\n FixedFrameBorderSize = " + SystemInformation.FixedFrameBorderSize.ToString();
s += "\r\n FrameBorderSize = " + SystemInformation.FrameBorderSize.ToString();
MessageBox.Show(s);
--- 以下、サイズに関するよもやま話。今回の件に関係あるかどうかは分かりません。---
AutoScaleMode = None で固定されるのは、クライアント領域のサイズです。
dpi 設定が 96 や 120 などに変化したとしても、ClientSize は変化せず、
周辺の Size のみが調整されるようになっています。
また、Size には上下左右の枠線幅とタイトルバーの高さ分が加わるため、
FormBorderStyle も影響を与えます。FormBorderStyle の設定に応じて
【None】
Size.Width = ClientSize.Width
Size.Height = ClientSize.Height
【Sizable】
Size.Width = ClientSize.Width + (2 * FrameBorderSize.Width)
Size.Height = ClientSize.Height + (2 * FrameBorderSize.Height) + CaptionHeight
【FixedSingle】
Size.Width = ClientSize.Width + (2 * FixedFrameBorderSize.Width)
Size.Height = ClientSize.Height + (2 * FixedFrameBorderSize.Height) + CaptionHeight
の関係が成り立つはずです。
|