2009-07-16 54 views
10

Tôi đang phát triển một ứng dụng nhanh trong C#. Một điều mà tôi muốn làm là tương đương với Swing (java) pack(). Đây là một cuộc gọi cho phép tôi nói với một biểu mẫu (Frame in Java), tự thay đổi kích thước của mình thành kích thước của tổng các thành phần bên trong chính bạn.Tương đương với gói Swing trong C#

Tôi đã tìm kiếm và tìm kiếm (các thành phần thay đổi động vì vậy tôi không thể đơn giản mã hóa biểu mẫu theo đúng kích cỡ) nhưng tôi không thể tìm thấy phương thức tương đương trong C#.

Có ai biết nó được gọi là gì không?

Trả lời

11

Bạn thậm chí không cần viết mã để 'đóng gói' biểu mẫu. Trong trình thiết kế biểu mẫu, hãy đặt thuộc tính AutoSize của biểu mẫu thành true và đặt thuộc tính AutoSizeMode thành GrowAndShrink, lặp lại điều này cho bất kỳ điều khiển nào trên biểu mẫu cũng có thể thay đổi kích thước.

Và thì đấy!

Khi chạy (chỉ), biểu mẫu sẽ tự động thay đổi kích thước để chứa tất cả các điều khiển. Nếu bạn muốn nó giữ khoảng cách một chút so với các nút điều khiển sao cho các nút điều khiển sẽ không 'dính' vào các cạnh, bạn có thể đặt thuộc tính Padding (tôi khuyên bạn nên sử dụng ít nhất 12,12,12,12) .

+1

Khi cài đặt AutoSize trên điều khiển như nhãn, bạn có thể sẽ muốn thiết lập thuộc tính 'MaximumWidth' buộc văn bản bị bọc, ngăn không cho bất kỳ đường dài nào làm cho biểu mẫu của bạn rộng hơn màn hình. – Robadob

2

Cũng trong XAML:

<Window SizeToContent="WidthAndHeight" /> 
0

Một giải pháp khác, chỉ khả dụng nếu hình ảnh là nhỏ hơn so với màn hình:

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(); 
Các vấn đề liên quan