2010-08-25 39 views
15

Tôi đã có một đối tượng biểu mẫu cửa sổ có chứa 3 đối tượng, một lần xem trang, một richtextbox và một tabcontrol. Chúng không được neo vào dạng cửa sổ, nhưng chúng được neo (trên cùng + bên trái).Điều gì ngăn cản tôi thay đổi kích thước (giảm kích thước) cửa sổ của tôi tạo thành đối tượng?

Tôi đã viết mã để thay đổi kích thước khi xử lý sự kiện định dạng lại được gọi, nhưng dường như nó chỉ hoạt động để tăng kích thước biểu mẫu, có nghĩa là tôi không thể thay đổi kích thước biểu mẫu thành kích thước nhỏ hơn. Điều này bao gồm thời gian khi tôi lần đầu tiên tăng biểu mẫu cửa sổ chính và sau đó cố gắng trả lại kích thước ban đầu của nó.

Các kích thước trong ba đối tượng được thiết lập bằng tay sau mỗi lần thay đổi kích thước Form với mã dưới đây:

 treeView1.Height += (this.Height - oldHeight); 
     richTextBox1.Width += (this.Width - oldWidth); 
     tabControl1.Width += (this.Width - oldWidth); 
     tabControl1.Height += (this.Height - oldHeight); 
     oldHeight = this.Height; 
     oldWidth = this.Width; 

Không ai trong số các đối tượng có kích thước bộ tối thiểu (họ là tất cả ở 0,0 trong suốt quá trình thay đổi kích thước)

Điều gì đang ngăn không cho thay đổi kích cỡ biểu mẫu thành kích thước nhỏ hơn?

+0

Có lý do nào bạn không chỉ sử dụng cơ chế kết nối trong .NET không? Nó sẽ chăm sóc thay đổi kích thước cho bạn. –

+0

Việc gắn kết dường như quá hạn chế đối với những gì chúng tôi đang hy vọng, thông minh. Vị trí của các công cụ biểu mẫu của chúng tôi đã vượt qua sự dễ dàng thực hiện đối với chúng tôi. – Maixy

Trả lời

18

Tự động hóa (được đặt trên đối tượng Biểu mẫu chính) đang ngăn cửa sổ giảm kích thước nhỏ hơn các đối tượng chứa trong đó. Khi các đối tượng trong Biểu mẫu chính tăng lên trên mỗi lần thay đổi kích thước mở rộng, Biểu mẫu chính không thể thu nhỏ sau bất kỳ sự tăng kích thước thay đổi nào. Bằng cách vô hiệu hóa Tự động hóa trên đối tượng Biểu mẫu chính, tôi đã có thể lấy lại toàn quyền kiểm soát thay đổi kích thước.

+2

Đối với bất cứ ai khác đọc sách này, hãy xem thuộc tính "AutoSizeMode" mặc định là GrowOnly. Thay đổi nó thành GrowAndShrink cũng có thể giải quyết vấn đề này (không hứa hẹn). – ManEatingCheese

0

Chỉ cần đặt tất cả các bạn Controls thành một Panel và thiết lập Dock tài sản của Panel-Fill. Tôi tin rằng nó hoạt động ngay cả với Autosize được đặt thành true.

1

Nhấp chuột phải của bạn Winform trong Visual studio -> chọn tính ->AutoSize sẽ được thiết lập Đúng -> Thay đổi nó để False

HOẶC

Bao gồm dòng này trong mã của bạn

this.AutoSize = false; 
4

Nếu phần trên không giải quyết được, hãy kiểm tra rằng kích thước tối thiểu của biểu mẫu không được đặt thành giá trị lớn hơn mức bạn cần.

0

Có thể có thêm một cách để sửa lại hành vi của biểu mẫu không thể thay đổi kích thước bằng cách chọn chuột bình thường.

Liên quan đến thảo luận ở trên, tôi phát hiện [sử dụng VB.net trong VS2010] rằng một trong các biểu mẫu Windows chuẩn của tôi sẽ không thay đổi kích thước bằng cách chọn chuột. Nó giống như FormBorderStyle được đặt thành một dạng "Fixed". Thậm chí việc thay đổi FormBorderStyle thành SizableToolWindow cũng không đưa ra hành vi đáng ngờ về chuột.

Dưới đây là một số cài đặt dưới dạng từ Properties thiết kế dạng: AutoSize: false AutoSizeMode: growonly Doublebuffered: true Enabled: true FormBorderStyle: khá lớn ImeMode: NoControl khóa: sai AutoScaleMode: Font AccessibleRole: mặc định

Tất cả cài đặt thuộc tính có thể nhìn thấy hoặc mã của biểu mẫu này và tất cả cài đặt thuộc tính thiết kế của nó cũng giống với các biểu mẫu khác trong cùng một dự án. Làm sạch các giải pháp, và xây dựng lại nó cũng không khắc phục được vấn đề của hình thức đông lạnh. Nhấp vào Tối đa hóa đã hoạt động và do đó đã nhấp vào Thu nhỏ. Kích thước biểu mẫu có thể được đặt theo mã như mong đợi. Chỉ thay đổi kích thước chuột của biểu mẫu không hoạt động đúng.

tôi phát hiện ra rằng mong muốn thay đổi kích thước chuột lựa chọn có thể được kích hoạt một lần nữa bằng cách thiết lập, trong mã, bằng cách thiết lập các thông số:

myForm.AutoScaleMode = Windows.Forms.AutoScaleMode.Inherit

Tham số này có được đặt thành "phông chữ" trong thiết kế của biểu mẫu, cũng được sử dụng trong các biểu mẫu khác hoạt động bình thường.

Sau đó ... lạ ... thay đổi lại từ .Inhận thành ".Font" trong mã cũng cho phép biểu mẫu thay đổi kích thước đúng cách.

Cài đặt đó trong mã (hoặc là .Inherit hoặc .ont) dường như là yếu tố quan trọng để khắc phục sự cố đổi kích thước biểu mẫu, trong trường hợp này. Dường như có các thông số ẩn mà hệ thống không hiển thị cho người dùng, bằng cách nào đó ảnh hưởng đến hoạt động dự kiến ​​của biểu mẫu.

+0

Wordy và không rõ ràng, nhưng trên cái nhìn thứ hai và so với những người khác, không khá VLQ. –

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