يؤدي تعيين DataGridView.DefaultCellStyle.NullValue إلى قيمة خالية في وقت التصميم إلى ظهور خطأ عند إضافة صفوف وقت التشغيل

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

  •  09-06-2019
  •  | 
  •  

سؤال

في فيجوال ستوديو 2008

  • إضافة DataGridView جديد إلى النموذج
  • تحرير الأعمدة
  • إضافة DataGridViewImageColumn جديد
  • افتح CellStyle Builder لهذا العمود (خاصية DefaultCellStyle)
  • قم بتغيير NullValue من System.Drawing.Bitmap إلى قيمة خالية
  • حاول إضافة صف جديد إلى DataGridView في وقت التشغيل (DataGridView1.Rows.add () ؛)
  • تحصل على هذا الخطأ:System.FormatException:القيمة المنسقة للخلية لها نوع خاطئ.

إذا قمت بتغيير NullValue مرة أخرى إلى System.Drawing.Bitmap (كما كانت)، فستظل تحصل على نفس الخطأ عند إضافة صف.

إذا قمت بتعيين NullValue في وقت التشغيل بدلاً من وقت التصميم فلن تحصل على أي خطأ.(dataGridView1.Columns[0].DefaultCellStyle.NullValue = null;)

هل يمكن أن تخبرني لماذا هذا؟

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

المحلول

قد يكون هذا خطأً في المصمم؛إذا ألقيت نظرة على ملف .designer.cs (ربما تقوم بإجراء اختلاف قبل وبعد تعيين NullValue إلى null)، فيجب أن تكون قادرًا على رؤية الكود الذي ينشئه.

نصائح أخرى

كرونوز على حق.بعد تعيينه في وقت التصميم، فإنه يضيف هذا إلى .designer.cs:

dataGridViewCellStyle1.NullValue = "null";

إذا قمت بالتعديل "باطل" ل باطل ثم أنه يعمل بشكل جيد.لقد قمت بفحص DataGridViewCellStyle.NullValue set_NullValue(Object) وget_NullValue مع العاكس وأعتقد أن قيمة السلسلة لا ينبغي أن تثير أي خطأ هنا.

على أي حال كن حذرًا مع هذا وإذا كنت تريد تعيين وقت التصميم فلا تنس تعديل .design.cs.

قم بتغيير NullValue من System.Drawing.Bitmap إلى قيمة خالية

عندما تقوم بإدخال "خالية" في حقل NullValue في المصمم، فإنك تحدد قيمة السلسلة "خالية".الطريقة الوحيدة لتعيين NullValue إلى قيمة غير سلسلة هي تعيينها برمجيًا أو عن طريق تعديل كود المصمم بنفسك.

لا يمكن أن تحتوي خانة الاختيار على قيمة سلسلة.لا تقم بتعيين أي قيمة افتراضية في مربع حوار خصائص IDE.لقد قمت بكتابة "فارغ" في الخاصية RowsDefaultCellStyle.Format وهو ما تسبب في حدوث الخطأ.لقد كان ذاتيا.كحل كنت أحاول تعيين حالة مربع الاختيار على إلغاء تحديدها ولكني كنت بحاجة فقط إلى حذف قيمة السلسلة.

لقد وجدت أنه من الأفضل أن تقوم فقط بحذف العنصر من المصمم معًا من منطقة التنسيق ومنطقة القيمة الخالية الافتراضية.ثم يعيده إلى الصفر الحقيقي.سأحاول تعيينه في قسم init بعيدًا عن حماقة المصمم.

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