كيف أخفي بعض خصائص التحكم الافتراضية في وقت التصميم (C#)؟

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

سؤال

لديّ تحكم مخصص قمت به. يرث من 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 تعيين الخاصية أي خاصية هي واحدة لتحريرها.

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