2008-10-23 26 views
14

Tôi đã tạo một lớp kế thừa từ UserControl, nhưng mà tôi chỉ muốn sử dụng làm cơ sở cho các lớp con. Có cách nào tôi có thể ngăn chặn VS2008 từ cố gắng chỉnh sửa nó trong các nhà thiết kế, mà sẽ không ngăn chặn các lớp con được chỉnh sửa trong thiết kế?Có thuộc tính nào tôi có thể thêm vào một lớp để nó sẽ được chỉnh sửa dưới dạng mã, không phải trong trình thiết kế không?

Trả lời

26

Có. Tôi tin rằng nếu bạn có nhiều lớp trong một tập tin, VS chỉ nhìn vào lớp đầu tiên, nhưng tôi có thể bị nhầm lẫn. Trong mọi trường hợp, điều này cần thực hiện thủ thuật:

[System.ComponentModel.DesignerCategory("Code")] 
public class SomeBaseClass : UserControl 
{ 
//... 
} 

Xin lưu ý rằng bạn phải sử dụng tên đầy đủ của thuộc tính như minh họa ở trên. Nếu bạn cố gắng đặt một tuyên bố sử dụng ở trên nó và chỉ cần cố gắng "DesignerCategory" visual studio có thể không tôn vinh nó.

+1

Lớp cơ sở giờ mở ra dưới dạng mã, nhưng các lớp dẫn xuất * cũng * làm. Nhưng nếu bạn thêm một lớp giả ở trên với thuộc tính đó, nó hoạt động một sự quyến rũ! – Simon

+3

Hãy cẩn thận, chỉ cần sử dụng '[DesignerCategory (" Code ")]' dường như không hoạt động (trông giống như một lỗi trong Visual). Bạn phải viết tên đủ điều kiện '[System.ComponentModel.DesignerCategory (" Code ")]' – Benlitz

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