2012-08-13 44 views
9

Trong hình bên dưới, "MyCars" là một bộ sưu tập. Nếu thuộc tính của đối tượng là một bộ sưu tập, sau đó trong một PropertyGrid, giá trị xuất hiện dưới dạng chuỗi "(Bộ sưu tập)" với một nút ở bên phải nếu mục được chọn.Thay đổi giá trị cho mục thuộc tính trong PropertyGrid

Có thể thay đổi giá trị "(Bộ sưu tập)" không? Nếu vậy, làm thế nào? Lý do tôi hỏi là vì tôi đã triển khai UITypeEditor tùy chỉnh cho đối tượng sẽ xuất hiện trong PropertyGrid trong chương trình của tôi. Cho đến nay, nút bên phải xuất hiện nhưng giá trị văn bản giống với tên hiển thị của thuộc tính. Tôi muốn một chuỗi khác xuất hiện ở đó.

Example propertygrid.

Edit: cho những gì nó có giá trị, tôi biết tôi có thể ghi đè lên các phương pháp PaintValue từ UITypeEditor và cung cấp một biểu tượng, mà tôi có thể kết thúc làm nếu tôi không thể giải quyết vấn đề này, nhưng tôi muốn vẫn muốn biết liệu văn bản "(Bộ sưu tập)" có được thay đổi hay không.

+0

Tôi nghĩ bạn vẫn sẽ kết thúc bằng "(Bộ sưu tập)" bên cạnh biểu tượng của bạn nếu bạn đã sử dụng phương pháp PaintValue, nhưng không chắc chắn. –

Trả lời

7

Bài viết này Customized display of collection data in a PropertyGrid có thể giúp ích.


** CẬP NHẬT **

Để cung cấp một phiên bản tóm tắt của bài báo (trong trường hợp của liên kết là không có sẵn), các bước liên quan trong tùy biến hiển thị và mô tả về nội dung bộ sưu tập trong một PropertyGrid như sau:

  1. Cung cấp một bộ mô tả thuộc tính tùy chỉnh bằng cách tạo lớp lớp trừu tượng lớp cơ sở PropertyDescriptor.
  2. Ghi đè các phương thức và thuộc tính trừu tượng. Cung cấp triển khai thích hợp cho các thuộc tính mô tả DisplayName và mô tả.
  3. Hãy để lớp thu thập của bạn triển khai giao diện ICustomTypeDescriptor.
  4. Trả lại bộ sưu tập mô tả thuộc tính tùy chỉnh theo phương pháp GetProperties().
  5. Tùy chọn sử dụng TypeConverter đối tượng có nguồn gốc do .NET cung cấp hoặc triển khai các lớp của riêng bạn để tùy chỉnh trình bày văn bản của các lớp miền của bạn. Chỉ định chúng cho các lớp hoặc thuộc tính thích hợp bằng cách sử dụng lớp TypeConverterAttribute.

Để toàn cầu hóa dữ liệu PropertyGrid, mô tả thuộc tính có thể được xích lại với nhau (Xem thêm Globalized property grid).

+1

^Đó là câu trả lời! –

+1

Thật tuyệt vời! Điều đó đã hiệu quả! Cảm ơn! – kevin628

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