سؤال

لديّ هذه المشكلة ، لقد قمت بإنشاء DataGridViewColumn وأتمنى إضافة بعض الخصائص التي يمكنك تغييرها في تحرير وقت التصميم ... إليك رمزتي:

private int nMaxLength;
[Description("Fondoscala valore"), Category("Sea")]
public int MaxLength
{
    get { return nMaxLength; }
    set { nMaxLength = value; }
}

وفي الواقع على ما يرام ، عندما تفتح محرر العمود ، ترى هذا الخاصية ضمن فئة البحر ويمكنك التغيير ، ولكن عندما قمت بتغييره ، إذا ذهبت إلى ملف .designer.cs ، سترى قيمة الطول إلى 0 .. لا تغيير ... ما هي المشكلة ؟؟ شكرا مقدما

هل كانت مفيدة؟

المحلول

يقوم مصمم النماذج ببعض الخداع الداخلية للسماح لك بتغيير نوع العمود (على سبيل المثال من DataGridViewTextBoxColumn إلى DataGridViewButtonColumn) في وقت التصميم. نتيجة لهذا ، يعتمد المصمم على فئة الفرعية الخاصة بك DataGridViewColumn وجود تنفيذ بشكل صحيح Clone() الطريقة ، أي:

public override object Clone() {
    MyDataGridViewColumn that = (MyDataGridViewColumn)base.Clone();
    that.MaxLength = this.MaxLength;
    return that;
}

إذا لم تتجاوز Clone() الطريقة ، لن يرتكب المصمم أي تغييرات تقوم بقيمها على قيم الخصائص المخصصة.

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