2013-04-08 43 views
7

Tôi đang tải hình ảnh động trong một số FlowLayoutPanel. Tôi cần cho bảng điều khiển này để tự động kích thước nhưng chỉ theo chiều dọc.FlowLayoutPanel AutoSize chỉ theo chiều dọc?

Điều này có thể thực hiện được không, và nếu có, làm thế nào để tôi đạt được nó?

+0

_Có thể? _ Bạn đã thử chưa? –

+0

Tôi chỉ đặt thuộc tính AutoSize từ flowLayoutPanel = true; nhưng bảng điều khiển tăng theo chiều ngang – Ladessa

+1

Đặt thuộc tính FlowBreak trên các điều khiển bạn thêm vào True. Nếu bạn thêm chúng vào mã thì sử dụng phương thức SetFlowBreak() của bảng điều khiển. –

Trả lời

10

đơn giản, thêm một sự kiện tầm kiểm soát loại thêm:

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

thiết AutoSize = true

thiết flowdirection = LeftToRight

+0

Nó hoạt động nhưng không như tôi cần. Nó chỉ tải 1 hình ảnh trên mỗi dòng ... – Ladessa

+0

Bạn muốn bao nhiêu hình ảnh trong một dòng? –

+0

10 hình ảnh trong một dòng – Ladessa

1

tôi đã thiết lập kích thước từ bảng dinamically. Ví dụ:

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

Nó làm việc cho tôi. Thx tất cả

+0

'int newHeight = listImages.Count/10 * 100;' giống như int 'newHeight = listImages.Count * 10;' –

+0

Tôi biết nhưng * int newHeight = listImages.Count/10 * 100 *; tốt hơn của nó để hiểu rằng 10 là số lượng hình ảnh trên mỗi dòng và 100 chiều cao từ mỗi một – Ladessa

+0

Gợi ý: nó thậm chí sẽ dễ đọc hơn và có thể duy trì như thế này: 'int newHeight = listImages.Count/numberOfPicturesPerLine * pictureHeight', với các định nghĩa như 'const int numberOfPicturesPerLine = 10;' –

Các vấn đề liên quan