2013-04-08 10 views
7

Ładowanie obrazów dynamicznie wewnątrz FlowLayoutPanel. Potrzebuję tego panelu do automatycznego rozmiaru, ale tylko w pionie.FlowLayoutPanel AutoSize tylko w pionie?

Czy to możliwe, a jeśli tak, jak mam go osiągnąć?

+0

_Czy to możliwe? _ Czy próbowałeś? –

+0

Ustawiam tylko właściwość AutoSize z flowLayoutPanel = true; ale panel rośnie poziomo – Ladessa

+1

Ustaw właściwość FlowBreak na elementach sterujących dodawanych do wartości True. Jeśli dodasz je do kodu, użyj metody SetFlowBreak() panelu. –

Odpowiedz

10

Prosty, dodać zdarzenie kontroli typu dodania:

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

ustawić AutoSize = true

ustawić flowdirection = LeftToRight

+0

Działa, ale nie jak potrzebuję. Ładuje tylko 1 obraz na linię ... – Ladessa

+0

Ile zdjęć chcesz w linii? –

+0

10 zdjęć w linii – Ladessa

1

zrobiłem ustawić rozmiar od panelu dinamically. Przykład:

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

To działa na mnie. Thx all

+0

'int newHeight = listImages.Count/10 * 100;' jest taki sam jak int 'newHeight = listImages.Count * 10;' –

+0

Wiem, ale * int newHeight = listImages.Count/10 * 100 *; lepiej zrozumieć, że 10 to liczba obrazów na linię, a 100 to wysokość od każdej z nich. – Ladessa

+0

Wskazówka: byłoby jeszcze bardziej czytelne i możliwe do utrzymania w następujący sposób: 'int newHeight = listImages.Count/numberOfPicturesPerLine * pictureHeight', z takimi definicjami jak 'const int numberOfPicturesPerLine = 10;' –