المحررين المدمجين الافتراضي للتحكم في خصائص

StackOverflow https://stackoverflow.com/questions/735634

  •  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 الخاصة بك لأنواع كائن محددة من أجل إنجاز هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top