ماذا علي أن أفعل إذا كنت لا أرغب في إضافة بعض الخصائص العامة للمكون إلى طريقة التهيئة () بواسطة VS أثناء التصميم؟ لقد حاولت إضافة [Browsable(false)] إلى السمة ولكنها لا تعمل أيضًا.
الكود الخاص بي هو كما يلي:
/// <الملخص>
/// مربع القائمة المنسدلة لنوع اتصال وحدة التحكم.
/// </الملخص>
الطبقة العامة CommunicationTypeComboBox: ComboBox
{
/// <الملخص>
/// إنشاء مثيل لمربع القائمة.
/// </الملخص>
الاتصالات العامةTypeComboBox()
{
Items.Add("المنفذ التسلسلي");
Items.Add("TCP");
}
/// <الملخص>
/// احصل على كافة العناصر الموجودة في مربع القائمة.
/// </الملخص>
[قابل للتصفح (خطأ)]
عناصر ObjectCollection العامة الجديدة
{
احصل على {إرجاع العناصر الأساسية؛
}
}
ضع عنصر التحكم في النموذج، وسيقوم VS تلقائيًا بإضافة بعض التعليمات البرمجية إلى طريقة التهيئة ()InitializeComponent. جزء جريء.
//
// cmbCommunicationType
//
this.cmbCommunicationType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCommunicationType.FormattingEnabled = true;
this.cmbCommunicationType.Items.AddRange(new object[] {
"المنفذ التسلسلي" ،
"TCP"});
this.cmbCommunicationType.Location = new System.Drawing.Point(124, 66);
this.cmbCommunicationType.Name = "cmbCommunicationType";
this.cmbCommunicationType.SelectedItem = Xunmei.Door.CommunicationType.SerialPort;
this.cmbCommunicationType.Size = new System.Drawing.Size(121, 20);
this.cmbCommunicationType.TabIndex = 2;
this.cmbCommunicationType.SelectedIndexChanged += new System.EventHandler(this.cmbCommunicationType_SelectedIndexChanged);
وسوف يصبح الأمر هكذا مع زيادة عدد التعديلات. هل هناك طريقة للتغلب على هذا بخلاف عدم إضافة عناصر في المُنشئ؟
this.cmbCommunicationType.Items.AddRange(new object[] {
"المنفذ التسلسلي" ،
"برنامج التعاون الفني"،
"المنفذ التسلسلي" ،
"برنامج التعاون الفني"،
"المنفذ التسلسلي" ،
"برنامج التعاون الفني"،
"المنفذ التسلسلي" ،
"برنامج التعاون الفني"،
"المنفذ التسلسلي" ،
"TCP"});
بعد عدة أيام من العمل الشاق، عثرت أخيرًا على فئة DesignOnlyAttribute.
يحدد ما إذا كان يمكن تعيين الخاصية فقط في وقت التصميم.
لا يمكن تعيين الأعضاء الذين تم تمييزهم بتعيين DesignOnlyAttribute على true إلا في وقت التصميم. عادةً ما تكون هذه الخصائص موجودة فقط في وقت التصميم ولا تتوافق مع خاصية فعلية في كائن وقت التشغيل.
يمكن تعيين الأعضاء الذين ليس لديهم سمات (السمة) أو الذين تم وضع علامة عليهم بتعيين DesignOnlyAttribute على false في وقت التشغيل. الافتراضي هو خطأ.
يمكن أن تؤدي إضافة DesignOnlyAttribute إلى سمة العناصر الخاصة بـ CommunicationTypeComboBox إلى حل هذه المشكلة تمامًا.
/// <الملخص>
/// احصل على كافة العناصر الموجودة في مربع القائمة.
/// </الملخص>
[التصميم فقط(خطأ)]
عناصر ObjectCollection العامة الجديدة
{
احصل على {إرجاع العناصر الأساسية؛
}