2009-04-09 21 views
11

Tôi dường như không thể tìm thấy câu trả lời cho điều này ở bất kỳ đâu. Trình soạn thảo/chuyển đổi mặc định nào đang xây dựng thành điều khiển 3.5 của PropertyGrid. Nếu không thì tôi có thể ném loại đối tượng nào và có thể hiển thị và chỉnh sửa một cách đáng tin cậy? Tôi đã tìm thấy rất nhiều hướng dẫn về cách sử dụng các trình chỉnh sửa tùy chỉnh (mà tôi có thể thực hiện tại một số điểm). Nhưng ngay bây giờ trong chương trình của tôi, tôi cho phép người dùng tạo các thuộc tính tùy chỉnh của riêng mình và tôi muốn biết những kiểu đối tượng nào tôi nên cho phép giả sử họ sẽ chỉnh sửa chúng trong một PropertyGrid.Trình chỉnh sửa tích hợp mặc định cho điều khiển PropertyGrid

Trả lời

4

Bạn có thể muốn xem các lớp học lấy từ số UITypeEditor (trong số System.Drawing.Design namespace). Các loại này sẽ được chuyển thành các tham số cho số EditorAttribute (trong số System.ComponentModel namespace).

Bạn cũng có thể xem siêu dữ liệu cho loại để xem nơi áp dụng EditorAttribute. Tuy nhiên, không sử dụng phản ánh ở đây, vì đó không phải là những gì sử dụng PropertyGrid class.

Thay vì sử dụng TypeDescriptor class để lấy các bộ mô tả thuộc tính cho các thuộc tính trên loại (hãy gọi tĩnh GetProperties method). Sau đó, với cá thể PropertyDescriptor, hãy gọi số GetEditor method để nhận phiên bản trình chỉnh sửa cho thuộc tính đó.

1

Bạn thực sự có thể ném bất kỳ đối tượng nào vào PropertyGrid. Nó sẽ tự động làm rất nhiều thứ. Bạn chỉ cần tạo trình chỉnh sửa loại giao diện người dùng tùy chỉnh nếu bạn muốn có trải nghiệm chỉnh sửa đặc biệt, không được cung cấp nguyên bản. Và ngay cả trong trường hợp đó bạn làm điều đó cho mỗi tài sản và không cho một đối tượng toàn bộ.

+0

Nhưng tất cả những gì nó sẽ tự động làm là gì? Ngay bây giờ tôi không muốn đối phó với các biên tập viên tùy chỉnh. Tôi đã thử các số khác nhau, chuỗi, bool và DateTime và tất cả chúng đều hoạt động hoặc đã được xây dựng trong trình soạn thảo. Tôi đã hy vọng có một danh sách ở đâu đó trong tất cả các loại có thể được chỉnh sửa theo mặc định. –

+0

Bạn có thể xem xét hệ thống phân cấp thừa kế của các loại thuộc tính của bạn nếu chúng có một UITypeEditor đính kèm như một thuộc tính hay không. Theo mặc định, lưới thuộc tính cần trình chỉnh sửa hoặc trình chuyển đổi loại để truy cập/từ chuỗi. – grover

1

PropertyGrid sử dụng TypeConverters và có TypeConverters cho mọi kiểu nguyên thủy (cũng như tập hợp các kiểu nguyên thủy).

Miễn là bạn đang sử dụng một trong các loại nguyên thủy hoặc tập hợp các kiểu nguyên thủy, lưới thuộc tính sẽ có thể xử lý giao diện người dùng chỉnh sửa.

1

Bên cạnh UITypeEditors, PropertyGrid có thể hiển thị bất kỳ đối tượng nào bằng một TypeConverter trả về true cho CanConvertFrom (Chuỗi). Bạn có thể thực hiện TypeConverters của riêng bạn cho các loại đối tượng cụ thể để thực hiện điều này.

7

Lưu ý rằng có một số lớp ngoài công lập.

System.Object 
    System.Drawing.Design.UITypeEditor 
    System.ComponentModel.Design.CollectionEditor 
     System.ComponentModel.Design.ArrayEditor 
     System.Web.UI.Design.CollectionEditorBase 
     System.Web.UI.Design.WebControls.WizardStepCollectionEditor 
     System.Web.UI.Design.WebControls.EmbeddedMailObjectCollectionEditor 
     System.Web.UI.Design.WebControls.HotSpotCollectionEditor 
     System.Web.UI.Design.WebControls.ListItemsCollectionEditor 
     System.Web.UI.Design.WebControls.MenuItemStyleCollectionEditor 
     System.Web.UI.Design.WebControls.RoleGroupCollectionEditor 
     System.Web.UI.Design.WebControls.StyleCollectionEditor 
     System.Web.UI.Design.WebControls.SubMenuStyleCollectionEditor 
     System.Web.UI.Design.WebControls.TableCellsCollectionEditor 
     System.Web.UI.Design.WebControls.TableRowsCollectionEditor 
    System.ComponentModel.Design.BinaryEditor 
    System.ComponentModel.Design.DateTimeEditor 
    System.ComponentModel.Design.MultilineStringEditor 
    System.ComponentModel.Design.ObjectSelectorEditor 
    System.Windows.Forms.Design.AnchorEditor 
    System.Windows.Forms.Design.BorderSidesEditor 
    System.Windows.Forms.Design.DockEditor 
    System.Windows.Forms.Design.FileNameEditor 
    System.Windows.Forms.Design.FolderNameEditor 
    System.Windows.Forms.Design.ShortcutKeysEditor 
    System.Web.UI.Design.ConnectionStringEditor 
    System.Web.UI.Design.DataBindingCollectionEditor 
    System.Web.UI.Design.ExpressionsCollectionEditor 
    System.Web.UI.Design.UrlEditor 
    System.Web.UI.Design.XmlFileEditor 
    System.Web.UI.Design.WebControls.DataGridColumnCollectionEditor 
    System.Web.UI.Design.WebControls.DataControlFieldTypeEditor 
    System.Web.UI.Design.WebControls.MenuBindingsEditor 
    System.Web.UI.Design.WebControls.MenuItemCollectionEditor 
    System.Web.UI.Design.WebControls.ParameterCollectionEditor 
    System.Web.UI.Design.WebControls.RegexTypeEditor 
    System.Web.UI.Design.WebControls.TreeNodeCollectionEditor 
    System.Web.UI.Design.WebControls.TreeViewBindingsEditor 
    System.Web.UI.Design.WebControls.DataPagerFieldTypeEditor 
    System.Messaging.Design.QueuePathEditor 
    System.Drawing.Design.ImageEditor 
    System.Drawing.Design.ColorEditor 
    System.Drawing.Design.ContentAlignmentEditor 
    System.Drawing.Design.CursorEditor 
    System.Drawing.Design.FontEditor 
    System.Drawing.Design.FontNameEditor 
    System.Drawing.Design.IconEditor 
    System.Workflow.ComponentModel.Design.TypeBrowserEditor 
    System.Workflow.ComponentModel.Design.BindUITypeEditor 
Các vấn đề liên quan