المحررين المدمجين الافتراضي للتحكم في خصائص
-
09-09-2019 - |
سؤال
لا يبدو لي أن أجد الإجابة على هذا في أي مكان. ما يقوم المحررين / المحولات الافتراضية ببناءه في عنصر تحكم VanileGrid 3.5 Framework. وإلا فإن أنواع الكائنات التي يمكنني رميها فيها وتكون قادرا على إظهار وتعديلها بشكل موثوق؟ لقد وجدت الكثير من البرامج التعليمية باستخدام المحررين المخصصين (والتي قد أفعلها في مرحلة ما). ولكن الآن في برنامجي، فأنا اسمح للمستخدم بإنشاء خصائص مخصصة خاصة بهم وأريد أن أعرف أنواع الكائنات التي يجب أن أتاح عليك افتراض أنها ستتحريرها في خصوصية.
المحلول
قد ترغب في إلقاء نظرة على الفصول الدراسية التي تستمد من UITypeEditor
(في ال System.Drawing.Design
مساحة الاسم). سيتم تمرير هذه الأنواع كمعلمات إلى EditorAttribute
(في ال System.ComponentModel
مساحة الاسم).
يمكنك أيضا إلقاء نظرة على البيانات الوصفية للنوع لمعرفة أين EditorAttribute
يتم تطبيقها. ومع ذلك، لا استخدام الانعكاس هنا، كما هو ليس ما PropertyGrid
صف دراسي الاستخدامات.
بدلا استخدام TypeDescriptor
صف دراسي للحصول على واصفات الممتلكات للحصول على خصائص على النوع (استدعاء ثابت GetProperties
طريقة). ثم، مع PropertyDescriptor
مثيل، اتصل GetEditor
طريقة للحصول على مثيل محرر لهذا العقار.
نصائح أخرى
ضع في اعتبارك أن هناك بعض الطبقات غير العامة.
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
يمكنك فعلا رمي أي كائن في خصوصية. سوف تفعل الكثير من الأشياء تلقائيا. تحتاج فقط إلى إنشاء محرري من نوع UI مخصص إذا كنت ترغب في الحصول على تجربة تحرير خاصة، والتي لم يتم توفيرها أصلا. وحتى في هذه الحالة تقوم بذلك لكل خاصية وليس لكائن كامل.
يستخدم SpellGrid Typeconverters وهناك Typeconverters لكل نوع بدائي (بالإضافة إلى مجموعات أنواع البدائية).
طالما كنت تستخدم أحد الأنواع البدائية أو مجموعة من أنواع البدائية، يجب أن تكون شبكة الملكية قادرا على رعاية توفير واجهة المستخدم تحرير.
إلى جانب uitypeeditors، يكون SpellaGrid قادرا على عرض أي كائن باستخدام Typeconverter يعود إلى True for CanConvertFrom (سلسلة). يمكنك تطبيق Typeconverters الخاصة بك لأنواع كائن محددة من أجل إنجاز هذا.