2013-02-14 8 views
9

モーダルダイアログとして表示されるフォームがあります。フォームは設計者に次のようになりますフォームが表示されたときにサイズが変更されるのはなぜですか?

as in the design view in Visual Studio (幅= 360、高さ= 215)は、それがアプリケーションに示されている

は、広いを残して、定義されているより10個のピクセルが高く且つ広くなります底部及び左エッジの周りの余白:

as in the running application(幅= 370、高さ= 225)

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

何が原因で起こりますか?


フォームのMinimumSize設定を削除してこの問題を修正しました。 Sizeプロパティと同じサイズ(またはそれに近いが、しきい値はまだ見つけられていません)に設定されている場合は、余白が導入されます。フォームのサイズ変更ができないため、削除できるようにMinimumSizeのセットは必要ありません。

私はまだ理解していませんなぜこれがそうですが。

+0

maxまたはminプロパティが設定されていますか? – CR41G14

+1

@ CR41G14:はい​​。「Size」、「MinimumSize」、「MaximumSize」はすべて「360,215」に設定されています。 – adrianbanks

+0

好奇心の乏しさから、いつも370x225までバンプされていますか(使用する開始寸法に関係なく)、あるいは常に各ピクセルに10ピクセルが追加されていますか?結果を見るために他のウィンドウサイズを試しましたか? – jszigeti

答えて

2

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

これが役に立ちます。

あなたはブルートコードで問題を強制しないのはなぜ
1

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

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

6

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

次に、メインフォームを作成する前に次の行を有することを確認します。これらの行を使用しない

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 

(通常これはProgram.csで静的Main方法の一部である)

はの使用を引き起こします

2

私は1つのフォームを作成し、フォントを変更してFormBorderStyleをに設定しています(このスクリーンショットでは、しかし、私は何の問題に直面しませんでした。フォームの読み込み時に正確に何を設定しているかを確認してください。

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

あなたはformLoad法に書いたコードを提供することができます。私は問題を解決しようとすることができるように。