2013-04-08 15 views
7

Sto caricando le immagini dinamicamente all'interno di FlowLayoutPanel. Ho bisogno che questo pannello sia dimensionato automaticamente ma solo verticalmente.FlowLayoutPanel AutoSize solo in verticale?

E 'possibile, e se sì, come posso raggiungerlo?

+0

_È possibile? _ L'hai provato? –

+0

Ho impostato solo la proprietà AutoSize da flowLayoutPanel = true; ma il pannello aumenta orizzontalmente – Ladessa

+1

Imposta la proprietà FlowBreak sui controlli che aggiungi a True. Se li aggiungi nel codice, usa il metodo SetFlowBreak() del pannello. –

risposta

10

semplice, aggiungere un evento di controllo di tipo aggiunto:

private void flowLayoutPanel1_ControlAdded(object sender, ControlEventArgs e) 
{ 
    if (flowLayoutPanel1.Controls.Count % 10 == 0) 
     flowLayoutPanel1.SetFlowBreak(e.Control as Control, true); 
} 

set AutoSize = true

set flowdirection = LeftToRight

+0

Funziona ma non come ho bisogno Carica solo 1 immagine per riga ... – Ladessa

+0

Quante immagini vuoi in una riga? –

+0

10 foto in una riga – Ladessa

1

ho impostare la dimensione dal pannello dinamicamente. Esempio:

int newHeight= listImages.Count/10 * 100; 
       flowLayoutPanel1.Size = new Size(1143, newHeight); 

Funziona per me. Thx all

+0

'int newHeight = listImages.Count/10 * 100;' è uguale a int 'newHeight = listImages.Count * 10;' –

+0

Lo so ma * int newHeight = listImages.Count/10 * 100 *; è meglio capire che 10 è il numero di immagini per riga e 100 l'altezza da ciascuna – Ladessa

+0

Suggerimento: sarebbe anche più leggibile e mantenibile in questo modo: 'int newHeight = listImages.Count/numberOfPicturesPerLine * pictureHeight', con definizioni come 'const int numberOfPicturesPerLine = 10;' –

Problemi correlati