2013-02-14 2 views
9

Ho un modulo che appare come una finestra di dialogo modale. La forma assomiglia a questo nel Designer:Perché il mio modulo viene ridimensionato quando viene visualizzato?

as in the design view in Visual Studio (larghezza = 360, altezza = 215)

Quando è mostrato nella domanda, si ottiene 10 pixel alta e più larga è definito, lasciando un'ampia margine intorno alla parte inferiore e sinistro bordi:

as in the running application (larghezza = 370, altezza = 225)

la forma è esplicitamente impostato per essere 360x215 pixel in dimensione, con uno stile di confine FixedDialog, eredita da 012.353.e non contiene codice per manipolare le dimensioni (ad eccezione del file di progettazione generato automaticamente). Se cambio lo stile del bordo su FixedSingle o FixedToolWindow, appare la dimensione corretta (ma lo voglio stilizzato come FixedDialog).

Qualche idea di cosa sta causando questo?


Ho risolto questo rimuovendo l'impostazione MinimumSize sul modulo. Sembra che se è impostato alla stessa dimensione (o vicino, ma non ho ancora trovato la soglia) come la proprietà Size, vengono introdotti i margini. Poiché il modulo non è ridimensionabile, non ho bisogno del set MinimumSize in modo che possa essere rimosso.

Ancora non capisco perché questo è il caso però.

+0

Le proprietà max o min sono state impostate? – CR41G14

+1

@ CR41G14: sì, 'Size',' MinimumSize' e 'MaximumSize' sono tutti impostati su' 360, 215'. – adrianbanks

+0

Per curiosità, viene sempre eseguito il dump fino a 370x225 (indipendentemente dalle dimensioni iniziali che si utilizzano), oppure viene sempre aggiunto 10 pixel a ciascun lato? Hai provato altre dimensioni della finestra solo per vedere i risultati? – jszigeti

risposta

2

Ho avuto un problema simile con il mio modulo. Alla fine ho scoperto che il problema riguardava la dimensione massima e minima del modulo nelle proprietà. Se vuoi un modulo fisso, non ridimensionabile, devi disabilitarli.

Spero che questo aiuti.

1

Perché non forza bruta il problema con il codice:

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

che definisce l'area client. È necessario calcolare quali valori si desidera.

6

Innanzitutto, il tuo modulo sembra avere AutoScaleMode impostato su Font. Ciò causa un ridimensionamento del modulo in base al carattere utilizzato.

secondo luogo, assicurarsi di avere le seguenti linee prima di creare la forma principale:

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 

(solito questo è parte del Main metodo statico in Program.cs)

Non usando quelle linee provoca l'uso di un diverso rendering dei caratteri (dai un'occhiata alle tue schermate - le lettere non sembrano esattamente identiche!)

2

Ho creato un modulo, ho cambiato il carattere e impostato il FormBorderStyle in FixedDialog, ma non ho riscontrato alcun problema. Controlla semplicemente che cosa stai impostando esattamente sul caricamento del modulo.

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

Se è possibile fornire il codice che si scrive sul metodo formLoad. In modo che possa provare a correggere il problema.