2013-02-14 11 views
9

Ich habe ein Formular, das als modaler Dialog erscheint. Die Form sieht wie folgt in dem Designer:Warum wird die Größe meines Formulars geändert, wenn es angezeigt wird?

as in the design view in Visual Studio (Breite = 360, Höhe = 215)

Wenn es in der Anwendung gezeigt wird, wird es 10 Pixel höher und breiter als definiert ist, ein großes Verlassen Rand um die unteren und linken Rand:

as in the running application (Breite = 370, Höhe = 225)

die Form explizit festgelegt ist 360x215 Pixel in Dimension werden soll, eine Rahmenart von FixedDialog, erbt von 012.353.und enthält keinen Code zum Bearbeiten der Dimensionen (mit Ausnahme der automatisch generierten Designerdatei). Wenn ich den Randstil zu FixedSingle oder FixedToolWindow ändere, scheint es die korrekte Größe (aber ich will es als FixedDialog styled).

Irgendeine Idee, was das verursacht? durch Entfernen der MinimumSize Einstellung auf dem Formular


Ich habe dieses Problem behoben. Es scheint, dass, wenn es auf die gleiche Größe (oder nahe, aber ich habe noch nicht ganz den Schwellenwert gefunden) als die Size Eigenschaft, die Ränder eingeführt werden. Da das Formular nicht skalierbar ist, brauche ich das MinimumSize Set nicht, damit es entfernt werden kann.

Ich verstehe immer noch nicht warum das ist der Fall obwohl.

+0

Wurden die Max- oder Min-Eigenschaften festgelegt? – CR41G14

+1

@ CR41G14: Ja, 'Size',' MinimumSize' und 'MaximumSize' sind alle auf' 360, 215' gesetzt. – adrianbanks

+0

Aus Neugier, ist es immer bis zu 370x225 gestoßen (egal, welche Startmaße Sie verwenden), oder ist es stattdessen immer 10 Pixel auf jeder Seite hinzugefügt? Haben Sie andere Fenstergrößen versucht, nur um die Ergebnisse zu sehen? – jszigeti

Antwort

2

Ich hatte ähnliches Problem mit meiner Form. Schließlich habe ich festgestellt, dass das Problem mit der maximalen und minimalen Größe des Formulars in den Eigenschaften zusammenhängt. Wenn Sie ein festes, nicht einschränkbares Formular wünschen, müssen Sie es deaktivieren.

Hoffe, das hilft.

1

Warum nicht Brute das Problem zwingen mit dem Code:

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

, die den Client-Bereich setzt. Sie müssen berechnen, welche Werte Sie wollen.

6

Zunächst scheint Ihr Formular auf Font festgelegt zu haben. Dies führt zu einer Größenänderung des Formulars abhängig von der verwendeten Schriftart.

Zweitens sorgen die folgenden Zeilen haben, bevor das Hauptformular zu erstellen:

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 

(Normalerweise ist dieser Teil der statischen Main Methode in Program.cs ist)

diese Zeilen bewirkt, dass die Verwendung von nicht mit eine andere Schriftwiedergabe (schau dir deine Screenshots an - die Buchstaben sehen nicht exakt identisch aus!)

2

Ich habe ein Formular erstellt, die Schriftart geändert und die FormBorderStyle aufgesetzt, aber ich hatte kein Problem. Überprüfen Sie einfach, was genau Sie beim Laden des Formulars einstellen.

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

Wenn Sie den Code zur Verfügung stellen können, den Sie mit der Methode formLoad schreiben. Damit ich versuchen kann, das Problem zu beheben.

Verwandte Themen