2009-07-16 15 views
10

Sto sviluppando un'applicazione rapida in C#. Una cosa che voglio fare è l'equivalente di Swing's (java) pack(). Questa è una chiamata che mi permette di dire a un modulo (Frame in Java), ridimensionare te stesso alla dimensione della somma dei componenti dentro di te.Equivalente del pacchetto di Swing in C#

Ho cercato e cercato (i componenti cambiano dinamicamente quindi non posso semplicemente hardcode il modulo alla giusta dimensione) ma non riesco a trovare il metodo equivalente in C#.

Qualcuno sa come si chiama?

risposta

11

Non è nemmeno necessario il codice di scrittura per "comprimere" il modulo. Nel progettista di moduli, impostare la proprietà AutoSize del modulo su true e impostare la proprietà AutoSizeMode su GrowAndShrink, ripetere ciò per tutti i controlli nel modulo che possono anche cambiare dimensione.

E voilà!

In fase di esecuzione (solo), il modulo si ridimensiona dinamicamente per adattarsi a tutti i controlli. Se si desidera che mantenga una piccola distanza dai controlli in modo che i controlli non si appiccichino ai bordi, è possibile impostare la proprietà Padding (consiglierei almeno un valore di 12,12,12,12) .

+1

Quando si imposta AutoSize in materia di controlli, quali etichette, probabilmente si vuole impostare la proprietà 'MaximumWidth' per forzare il testo a capo, evitando che le linee lunghe possano rendere il modulo più largo dello schermo. – Robadob

2

anche in XAML:

<Window SizeToContent="WidthAndHeight" /> 
0

Un'altra soluzione, disponibile solo se l'immagine è più piccolo dello schermo:

Form frm = new Form(); 
PictureBox pbx = new PictureBox(); 
pbx.Image = Image.FromFile(_imagePath.Text); 
pbx.Dock = DockStyle.Fill; 
frm.Controls.Add(pbx); 
frm.Size = pbx.Image.Size; 
frm.Show();