2012-11-23 12 views
9

Per qualche motivo se si imposta sia la larghezza che l'altezza di Form.MaximumSize a zero, si otterrà una dimensione della finestra senza restrizioni, tuttavia se si desidera impostare un limite, è necessario farlo sia per la larghezza che per l'altezza a lo stesso tempo. Voglio una larghezza fissa ma nessun limite di altezza.È possibile impostare la larghezza massima per un modulo ma lasciare l'altezza massima illimitata?

// No Limits 
    this.MaximumSize = new Size(0,0); 

    // Form Height will be stuck at 0 
    int ArbitraryWidth = 200; 
    this.MaximumSize = new Size(ArbitraryWidth, 0); 
+0

Hai considerato di intercettare gli eventi di ridimensionamento e forzare manualmente le dimensioni del modulo per non superare la larghezza arbitraria? – ose

+0

@ose - Sì ma sembra un po 'brutto –

+0

sfortunata decisione architettonica => codice un po' brutto :( – ose

risposta

1

E 'possibile impostare la larghezza massima di un modulo, ma lasciare il Altezza massima senza restrizioni?

Non proprio. Si potrebbe simulare nel modo seguente:

private void Form1_Resize(object sender, EventArgs e) 
    { 
     SetMaximumWidth(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     SetMaximumWidth(); 
    } 

    private void SetMaximumWidth() 
    { 
     if (Width > 200) 
      Width = 200; 
    } 
15

Usa INT_MAX dato che è il limite teorico che può essere rappresentato da un Size comunque:

//Max width 200, unlimited height 
this.MaximumSize = new Size(200, int.MaxValue); 
4

So che la questione è un paio di anni, ma ho incontrato lo stesso problema e quello che ho fatto è stato quello di impostare uno dei parametri per la risoluzione dello schermo, assumendo che la dimensione del modulo non può superare la dimensione dello schermo.

this.MaximumSize = new Size(200, Screen.PrimaryScreen.Bounds.Height); 

Si spera che questo aiuti qualcuno.

+0

Funziona per me anche se in pratica probabilmente non è diverso da INT_MAX.Grazie! –

+0

Questo mi aiuta anche io, grazie! – Kaitlyn

+1

Questo causerà problemi se la risoluzione cambia, ad esempio se si collega il laptop a un proiettore per una dimostrazione, anche se il display secondario, terziario, ecc. è più alto del display principale e si sposta il modulo su quel display, oppure se si ha monitor impilati e desidera estenderlo su più schermi – Dan

Problemi correlati