9

モーダル ダイアログとして表示されるフォームがあります。フォームはデザイナーで次のように表示されます。

Visual Studio のデザイン ビューのように (幅=360、高さ=215)

アプリケーションに表示されると、定義されているよりも 10 ピクセル高さと幅が大きくなり、下端と左端の周囲に広い余白が残ります。

実行中のアプリケーションのように (幅=370、高さ=225)

フォームは、寸法が 360x215 ピクセルに明示的に設定され、境界線スタイルが でありFixedDialog、 から継承されSystem.Windows.Forms.Form、寸法を操作するためのコードが含まれていません (自動生成されたデザイナー ファイルを除く)。境界線のスタイルをFixedSingleまたはに変更FixedToolWindowすると、正しいサイズに表示されます (ただし、スタイルを にしたいFixedDialog)。

これの原因は何ですか?


MinimumSizeフォームの設定を削除することでこれを修正しました。プロパティと同じサイズ(またはそれに近いサイズですが、まだしきい値がわかりません)に設定するSizeと、マージンが導入されるようです。フォームはサイズ変更できないため、MinimumSizeセットは必要ないので削除できます。

なぜそうなのかはまだわかりませんが。

4

5 に答える 5

9

まず、フォームが にAutoScaleMode設定されているようFontです。これにより、使用されているフォントに応じてフォームのサイズが変更されます。

次に、メイン フォームを作成する前に、次の行があることを確認します。

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);  // Not using this - or using true - will cause a different font rendering
...
Application.Run(new Form1());                          // this creates your main form

(通常、これは の静的Mainメソッドの一部ですProgram.cs)

これらの行を使用しないと、別のフォント レンダリングが使用されます (スクリーンショットを見てください - 文字がまったく同じに見えません!)

于 2013-04-30T20:31:51.910 に答える
2

私のフォームにも同様の問題がありました。最後に、プロパティのフォームの最大サイズと最小サイズに問題があることがわかりました。固定されたサイズ変更できないフォームが必要な場合は、それらを無効にする必要があります。

お役に立てれば。

于 2013-02-17T07:20:39.533 に答える
2

コードで問題をブルート フォースしてみませんか。

protected override void SetClientSizeCore(int x, int y)
{
    base.SetClientSizeCore(360, 215);
}

クライアント領域を設定します。必要な値を計算する必要があります。

于 2013-02-17T07:27:12.637 に答える
2

フォームを 1 つ作成し、フォントを変更して を に設定しFormBorderStyleましたFixedDialogが、問題は発生しませんでした。フォームの読み込み時に正確に何を設定しているのかを確認してください。

// this needs to be set as joe said is correct.
Application.SetCompatibleTextRenderingDefault(false);

formLoadメソッドで書いたコードを提供できれば。そのため、問題を修正しようとすることができます。

于 2013-05-24T13:21:58.547 に答える
0

「Form1.Designer.cs」というフォームに入ることで、ある程度成功しました。次に、次のコードの最後の単語が「通常」であることを確認しました。

    this.WindowState = System.Windows.Forms.FormWindowState.Normal;
于 2021-10-03T12:33:10.183 に答える