2010-10-19 49 views
8

Có thể sử dụng công cụ bố trí WinForms để thiết lập một biểu mẫu theo cách mà chiều cao được điều chỉnh hoàn toàn tự động để phù hợp với nội dung, nhưng chiều rộng có thể được điều chỉnh bởi người dùng không?WinForms tự động điều chỉnh theo chiều dọc trong khi vẫn điều chỉnh chiều rộng?

Như một ví dụ, hãy xem xét các hình thức hơi giả tạo như sau:

  • TLP: TableLayoutPanel, với 1 hàng và 2 cột.
  • label1: Label, được chứa trong cột bên trái. Đặt Text thành thứ gì đó dài, AutoSize thành sai, Dock để Tô màu.
  • button1: Nút, nằm trong cột bên phải. Đặt AutoSize thành true.
  • Bây giờ hãy đặt hàng thành "Tự động hóa", cột đầu tiên thành "100%" và cột thứ hai thành "Tự động hóa".
  • Cuối cùng, đặt toàn bộ TLP thành AutoSize đúng, AutoSizeMode thành GrowAndShrink.

Tại thời điểm này, TLP có thể được thay đổi kích thước theo chiều ngang một cách hợp lý, nhưng WinForms dường như không cho phép điều này.

Ý tưởng là biểu mẫu chứa TLP này sẽ tăng hoặc thu nhỏ theo chiều dọc dựa trên chiều rộng, mà người dùng có thể thay đổi bằng cách đổi kích thước cửa sổ như bình thường.

Trả lời

6

Hy vọng rằng bạn đã có giải pháp ngay bây giờ. Nhưng trong trường hợp bất kỳ ai có cùng truy vấn, Bạn có thể đặt chiều rộng của Thuộc tính Kích thước Tối đa cho Chiều rộng Thực tế của Biểu mẫu và Chiều cao của MaximumSize thành 0.

1

Điều này hoàn toàn có thể. Để thực hiện việc này, bạn phải ghi đè SetBoundsCore trên biểu mẫu của mình. Trong này, bạn có thể kiểm soát chiều cao sao cho nó không thay đổi khi một thay đổi kích thước có thể muốn nó. Chỉ cần lưu trữ chiều cao bạn muốn nó được trong một biến và sau đó có ghi đè của bạn luôn luôn đặt nó vào đó. Bằng cách này, khi bạn tự động định kích thước chiều cao, bạn lưu chiều cao mới nhận biết trước khi đặt biểu mẫu HeightSetBoundsCore sẽ tôn trọng chiều cao mới đó.

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