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
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 đó.
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ộ.
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.
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.
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
- 1. Google thích chỉnh sửa/kết hợp điều khiển cho Delphi?
- 2. Đặt trình chỉnh sửa mặc định cho tệp XML Android
- 3. Làm cách nào để làm cho trình chỉnh sửa làm trình chỉnh sửa mặc định cho tất cả các tệp không xác định trong Eclipse?
- 4. Cách đặt Notepad ++ làm trình chỉnh sửa mặc định TortoiseSVN?
- 5. Cách xác định "TagPrefix" mặc định cho các điều khiển tùy chỉnh
- 6. Mặc định cho Binding.Mode = Mặc định cho điều khiển WPF là gì?
- 7. Wix: Chỉnh sửa điều khiển không thiết lập thuộc tính
- 8. MFC có tích hợp điều khiển lưới không?
- 9. Phạm vi phụ thuộc cho trình điều khiển Derby JDBC trong phạm vi tích hợp (cayenne)
- 10. Hợp nhất Git không sử dụng thông báo hợp nhất mặc định, mở trình chỉnh sửa với thông báo mặc định
- 11. Trình chỉnh sửa xml cho linux
- 12. Độ dài tối đa trong Wix Điều khiển chỉnh sửa
- 13. Tạo trình điều khiển ODBC tùy chỉnh
- 14. Trình chỉnh sửa PrimeFaces
- 15. PropertyGrid - Tên thuộc tính tùy chỉnh?
- 16. Trình chỉnh sửa/định dạng JSON?
- 17. C# WinForms thuộc tính mặc định của điều khiển tùy chỉnh
- 18. Buộc trình điều khiển cho phù hợp với thiết bị
- 19. Sử dụng trình chỉnh sửa bộ sưu tập .NET mà không sử dụng điều khiển lưới thuộc tính
- 20. Chỉnh sửa HTML thô bên trong một điều khiển TinyMCE
- 21. Điều khiển tùy chỉnh Giá trị mặc định của thuộc tính văn bản ghi đè
- 22. Thứ tự tải trình điều khiển tích hợp Linux là gì?
- 23. Trình chỉnh sửa văn bản có thiết bị đầu cuối tích hợp?
- 24. Làm cách nào để bỏ qua Kiểu mặc định cho một điều khiển cụ thể?
- 25. cách lấy giá trị số từ điều khiển chỉnh sửa
- 26. Chuỗi nhiều dòng trong một PropertyGrid
- 27. Mở tệp ánh xạ nguồn bảng điều khiển trong trình chỉnh sửa bên ngoài
- 28. Đặt giá trị cho trình chỉnh sửa ace mà không chọn toàn bộ trình chỉnh sửa
- 29. PropertyGrid lựa chọn thay thế
- 30. Đặt dự án mặc định cho các dự án VB.NET sao cho thuộc tính Modifiers mặc định cho điều khiển là Private
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. –
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