كيف أخفي بعض خصائص التحكم الافتراضية في وقت التصميم (C#)؟
-
03-07-2019 - |
سؤال
لديّ تحكم مخصص قمت به. يرث من System.Windows.Forms.Control
, ولديها العديد من الخصائص الجديدة التي أضفتها. هل من الممكن إظهار خصائقي (Texton و Textoff على سبيل المثال) بدلاً من خاصية "النص" الافتراضية.
يعمل سيطرتي بشكل جيد ، أود فقط إزالة الإزاحة نافذة العقار.
المحلول
يمكنك إما تجاوزها (إذا كان يمكن تجاوزها) وتطبيق Browsable
سمة ، تحديد false
, ، أو إنشاء إصدار جديد من الخاصية وتطبيق نفس السمة (لا يبدو أن هذا النهج الثاني يعمل دائمًا حتى YMMV).
أيضا ، يمكنك استخدام العرف TypeConverter
لنوعك وتجاوز GetProperties
طريقة للتحكم في الخصائص التي يتم عرضها لنوعك. هذا النهج أكثر قوة بالنسبة لفصول الأساس الأساسية المتغيرة ولكن يمكن أن تبذل المزيد من الجهد ، اعتمادًا على ما تريد تحقيقه.
غالبًا ما أستخدم مزيجًا من Browsable
السمة والعرف TypeConverter
.
نصائح أخرى
تجاوز العقار وأضف [Browsable(false)]
.
قد ترغب أيضًا في إضافة [EditorBrowsable(EditorBrowsableState.Never)]
, ، والتي سوف تخفي الملكية في Intellisense في محرر الكود. لاحظ أنه سيتم إخفاءه فقط في حل منفصل عن عنصر التحكم الأصلي.
باستخدام System.componentModel ؛
[Browsable(false), DesignerSerializationVisibility(
DesignerSerializationVisibility.Hidden)]
public int MyHiddenProp {get; set; }
عملت من أجلي بهذه الطريقة ، لن يظهر في المصمم ، ولن يتم تهيئة الخصائص من قبل المصمم ، والتي من شأنها أن تتجاوز تهييداتي الخاصة ....
أنت تبحث عن سمات وقت التصميم, ، على وجه التحديد BrowsableAttribute. DefaultPropertyAttribute تعيين الخاصية أي خاصية هي واحدة لتحريرها.