2009-08-31 35 views
5

Tôi bị bối rối bởi một số hành vi kỳ lạ trong trình chỉnh sửa biểu mẫu của Visual Studio. Tôi đã thấy điều này trên một vài hình thức khác nhau trong đơn đăng ký của tôi. Mỗi lần tôi mở biểu mẫu trong trình soạn thảo bố cục của Visual Studio, một số điều khiển sẽ ở một vị trí khác so với khi tôi rời chúng. Thông thường một số nút di chuyển lên một chút từ góc dưới bên phải. Nhưng nó không chỉ là các nút, trong một trường hợp nó là một bảng điều khiển container di chuyển. Tôi phải định vị lại chúng sau đó lưu và đóng biểu mẫu. Tôi đã xác nhận rằng đó là trình soạn thảo bố cục thực sự thay đổi thuộc tính Location khi biểu mẫu được mở vì nếu tôi lưu và đóng biểu mẫu bằng các nút ở đúng vị trí, chúng sẽ chính xác khi chạy.Điều khiển WinForms bị xáo trộn mỗi khi biểu mẫu được xem

Đây không phải là vấn đề với các thuộc tính Anchor hoặc Dock không được đặt chính xác. Trình chỉnh sửa thực sự đang thay đổi thuộc tính Location của (các) kiểm soát của tôi. Tôi đã xem tập tin .designer.cs và tôi không thấy bất cứ điều gì bất thường. Tôi đã thử xóa và tạo lại các điều khiển này nhưng sự cố vẫn tiếp diễn.

Bất kỳ ý tưởng nào tôi có thể làm?

Nút không hiển thị của nó Tôi chỉ phải rất cẩn thận để sửa các điều khiển theo cách thủ công mỗi khi tôi mở nó trong trình chỉnh sửa bố cục winforms.

Chỉnh sửa: Visual Studio sẽ thực sự kiểm tra tệp tự động để đặt số Location thành những gì nó bướng bỉnh nghĩ là cần.

+1

Đây có phải là cổ phiếu VS2008 hoặc SP1 được áp dụng không? – Powerlord

+0

Có SP1 được cài đặt. VS2008 Team Edition + SP1 của nó. –

+0

Xin chào. Bạn có tìm thấy giải pháp cho vấn đề này không? Tôi đột nhiên trải qua hành vi giống hệt nhau! – Jalil

Trả lời

2

Tôi đã tìm thấy câu trả lời cho vấn đề này, nhưng nó trông giống như một lỗi đối với tôi. Nó chưa bao giờ được giải quyết kể từ năm 2003!

Tóm lại: Visual Inheritance không hoạt động tốt với Gắn kết.

Câu trả lời hoàn chỉnh tại đây: http://weblogs.asp.net/rweigelt/archive/2003/09/24/28984.aspx

+0

điều này đã khắc phục được sự cố của bạn? Tôi không có quyền truy cập vào mã nữa nên tôi không thể kiểm tra nó. –

+0

Có lẽ bạn có thể thử số chẵn trên các cung thủ vv ;-) – Andrew

+0

Tôi chấp nhận câu trả lời này dựa trên kết quả của Jalil và bởi vì câu hỏi này đã được mở từ rất lâu, có vẻ như câu trả lời hay nhất mà chúng tôi nhận được. Nhưng với tư cách là tác giả ban đầu của câu hỏi, tôi không thể nói chắc chắn nếu điều này sẽ khắc phục vấn đề ban đầu của tôi vì tôi không còn có quyền truy cập vào mã đó nữa. –

0

Vấn đề rất có thể liên quan đến DPI của nó. Kiểm tra các designer.cs cho một tài sản AutoScaleMode và thử thay đổi nó (hoặc thêm một) để thiết lập các form.AutoscaleMode = Font

+0

Nó đã được đặt thành AutoScaleMode = Font, giống như tất cả các biểu mẫu khác của tôi. –

0

Hãy thử khóa các điều khiển trong chế độ thiết kế và sau đó xem nó như thế nào.

+0

Tôi bỏ qua đề cập đến nó nhưng tôi đã thử điều đó. –

1

Tôi đồng ý với PaulG, nó rất có thể là một vấn đề liên quan đến Sở KH & ĐT

hãy thay đổi cài đặt card màn hình của bạn từ Lớn (120dpi) để bình thường (96 dpi).

+0

Điều này không hiệu quả đối với tôi. – Jalil

2

Trình chỉnh sửa WinForms là WYSIWYG yêu cầu trình chỉnh sửa thực sự thực thi mã bố cục để cho bạn biết chính xác biểu mẫu sẽ trông như thế nào. Trong khi cực kỳ thuận tiện, có một số vấn đề về gà và trứng bắt đầu tàn phá trình soạn thảo của bạn.

Một vấn đề thường gặp là kích thước. Đôi khi các thuộc tính điều khiển được sắp xếp không đúng (và, được tạo tự động, bạn không thể sửa lỗi này). Kết quả là một số giá trị cần thiết không được đặt cho đến sau khi thuộc tính cần nó. Một ví dụ nổi tiếng là SplitContainer và MinSize của Panel2 (xem http://social.msdn.microsoft.com/Forums/en-US/winformsdesigner/thread/ee6abc76-f35a-41a4-a1ff-5be942ae3425). Có thể bạn đang gặp sự cố gốc tương tự, nhưng kết quả là vị trí của các điều khiển của bạn đang thay đổi.

Tôi sẽ kiểm tra thứ tự các thuộc tính của bạn trong Nhà thiết kế và cố gắng xác định xem đó có phải là gốc của vấn đề hay không. Nếu có, bạn có thể cần đặt một số thuộc tính khi chạy. Nói chung, mặc dù, hiếm khi có một "sửa chữa" thực sự - độ phân giải thường xuyên hơn không phải là "giải pháp thay thế".

Các loại vấn đề này là một phần của động lực tạo WPF. Bản chất khai báo của XAML giúp ngăn chặn các loại sự cố này trong khi vẫn cung cấp cảm giác WYSIWYG.

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