7

次のコードがあります。

    private void MainForm_Shown(object sender, EventArgs e)
    {
        RepositionForm();
    }

    private void RepositionForm()
    {
        Rectangle rect = Screen.PrimaryScreen.WorkingArea;
        this.Width = 100;
        this.Height = 117;
        this.TopMost = true;
        this.Left = rect.Width - this.Width - 1;
        this.Top = rect.Height - this.Height - 1;
    }

Visual Studio からアプリを起動すると、フォームは正しいサイズ (100x117) で表示されます。ただし、EXE ファイルを起動してプロジェクトを起動すると、フォームのサイズは 106x127 になります。

The MinimumSize, MaximumSize and Size properties are set to 100x117.
WindowsState = Minimized
ShowIcon = False
ShowInTaskbar = False
Topmost = True
MinimizeBox - False
MaximizeBox = False
FormBorderSize = FixedDialog
ControlBox = True

アプリの起動方法にさえ違いがあるのはどうしてですか?

ありがとう

4

1 に答える 1

1

問題は、Windows のテーマやデスクトップ ウィンドウ マネージャーが OS のバージョンに対して決定論的ではないことにあると思います。

Windows テーマをベーシック (デスクトップ -> パーソナライズ) に設定してから、テストを再実行してみてください。異なる結果が得られた場合、コードではなく Windows に原因があることがわかります。

また、Windows フレームの非クライアント領域を調べて、それが OS/テーマから変更されるかどうかを確認することもできます。

于 2013-02-28T13:36:39.700 に答える