2009-09-17 42 views
17

Tôi cảm thấy như một kẻ ngốc vì bị bối rối bởi điều này, tôi cảm thấy như câu trả lời phải rõ ràng. Nhưng, than ôi, sau khi dành quá nhiều thời gian để xem qua Trình duyệt đối tượng và Googling, tôi tìm kiếm sự trợ giúp.PropertyGrid - Tên thuộc tính tùy chỉnh?

Tôi có một lớp học mà tôi sử dụng trong một PropertyGrid. Tôi thấy rằng bằng cách thiết lập CategoryAttribute trên mỗi thuộc tính nó tạo ra một thể loại mới cho mỗi mục, rõ ràng. Điều này đặt lưới thuộc tính của tôi để có [+] cho mỗi mục có tên tùy chỉnh của tôi trong đó và đây không phải là hành vi mà tôi đang cố gắng đạt được. Trong Visual Studio, nếu bạn nhấn vào một mục trong Solution Explorer, một assembly, nó không có các nút cây và chỉ là một danh sách các thuộc tính được đặt tên hoàn hảo, tức là bất kỳ chuỗi nào có thể xác định một thuộc tính, chứ không chỉ tên của đối tượng. Vì vậy, thay vì có này:

[+ File Path]
        filepath | propertyValue
[+ Kích thước tệp]
        FileSize | 0 KB

Tôi đang tìm cho điều này:

[+ File]
        File Path | giá trị
        Kích thước tệp | 0 KB

Hoặc thậm chí ở trên mà không có nút [+] ban đầu. Tôi đã đổ qua không gian tên System.ComponentModel tìm kiếm một thuộc tính thích hợp nhưng tôi không thể tìm thấy nó.

Làm cách nào để đạt được hiệu ứng này? Nó phải là có thể, Visual Studio hiện nó và tôi tin rằng họ đang cùng một thành phần, không phải là một nguồn gốc và mở rộng.

Cảm ơn! -Eric

Trả lời

38

Sử dụng DisplayNameAttribute để thay đổi những gì văn bản hiển thị (làm cho nó con người hơn có thể đọc được), các DescriptionAttribute để thêm văn bản trợ giúp đối với tài sản, và CategoryAttribute vào nhóm các thuộc tính ..

using System.ComponentModel; 

[Category("Test")] 
[DisplayName("Test Property")] 
[Description("This is the description that shows up")] 
public string TestProperty {get;set;} 
+3

bạn cũng có thể sử dụng thuộc tính Mô tả để cung cấp mô tả dài hơn cho người dùng – JDunkerley

+0

Cảm ơn bạn rất nhiều :) Lifesaver. +1 –

9

Bạn sẽ muốn có CategoryAttribute thiết lập để "File" cho cả hai thuộc tính:

[Category("File")] 
public string FilePath { get; set;} 

[Category("File")] 
public int FileSize { get; set;} 

tôi khuyên bạn nên đọc "Getting the most out of the .NET Property Grid Control" cho những ý tưởng khác mà bạn có thể sử dụng để tổ chức các thuộc tính của bạn, bao gồm mô tả thêm .

+1

Bạn đã bỏ lỡ các bit về tên hiển thị (mẫu trong trả lời của tôi nếu bạn muốn thêm nó) –

+1

Vâng, điều này giải quyết việc đặt chúng dưới một cây nhưng tôi cần thuộc tính DisplayName từ câu trả lời đã chọn. Cảm ơn, mặc dù! : D –

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