2013-04-08 10 views
7

Ich lade Bilder dynamisch innerhalb einer FlowLayoutPanel. Ich benötige für dieses Panel eine automatische Größe, aber nur vertikal.FlowLayoutPanel AutoSize nur in vertikaler Richtung?

Ist dies möglich, und wenn ja, wie gehe ich vor?

+0

_Es ist möglich? _ Hast du es versucht? –

+0

Ich habe nur die Eigenschaft AutoSize von flowLayoutPanel = true; aber das Bedienfeld wird horizontal vergrößert – Ladessa

+1

Setzen Sie die FlowBreak-Eigenschaft für die Steuerelemente, die Sie zu True hinzufügen. Wenn Sie sie im Code hinzufügen, verwenden Sie die Methode SetFlowBreak() des Panels. –

Antwort

10

Einfache, fügen Sie ein Ereignis vom Typ Kontrolle hinzugefügt:

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

gesetzt AutoSize = true

gesetzt flowdirection = LeftToRight

+0

Es funktioniert, aber nicht wie ich brauche. Es lädt nur 1 Bild pro Zeile ... – Ladessa

+0

Wie viele Bilder wollten Sie in einer Zeile? –

+0

10 Bilder in einer Zeile – Ladessa

1

ich die Größe von Panel dinamically festgelegt haben. Beispiel:

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

Es funktioniert für mich. Thx alle

+0

'int newHeight = listImages.Count/10 * 100;' ist das gleiche wie int 'newHeight = listImages.Count * 10; ' –

+0

Ich weiß aber * int newHeight = listImages.Count/10 * 100 *; es ist besser zu verstehen, dass 10 die Anzahl der Bilder pro Zeile und 100 die Höhe von jedem – Ladessa

+0

Hinweis: es wäre sogar lesbarer und wartbarer wie folgt: 'int newHeight = listImages.Count/numberOfPicturesPerLine * pictureHeight', mit Definitionen wie 'const int numberOfPicturesPerLine = 10;' –

Verwandte Themen