فشل كائن شبكة الخاصية في تحديد مربع التحرير والسرد ولكنه موافق عند تمرير مربع التحرير والسرد أو النقر عليه مرتين

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

  •  02-07-2019
  •  | 
  •  

سؤال

لدي شبكة خصائص في C#، أقوم بتحميل كائن "PropertyAdapter" (مجمع أساسي حول أحد الكائنات الخاصة بي يعرض الخصائص ذات الصلة بالعلامات المناسبة)

لدي TypeConverter على إحدى الخصائص (DataType، الذي يُرجع تعدادًا للقيم المحتملة) حيث أريد تحديد القيم المتاحة لشبكة الخصائص إلى Decimal وInteger، باستخدام الطريقتين كما يلي

public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
    return true;
}

public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
    return new StandardValuesCollection(new List<Constants.DataTypes>() { Constants.DataTypes.Decimal, Constants.DataTypes.Integer });
}

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

ومع ذلك، إذا استخدمت حقل الخاصية كمربع تحرير وسرد وقمت بتحديد قيمة من القائمة المنسدلة، فسيظهر لي مربع خطأ شبكة الخاصية القياسية مع الخطأ:

لا يمكن تحويل كائن نوع "system.string" إلى نوع "peleion.pm3.Utils.constants+أنواع البيانات".

أفترض أنه يمكنني استخدام تجاوزات المحول في محول النوع لاعتراضها وتحويلها إلى تعداد أنواع البيانات، ولكن لماذا تفشل شبكة الخصائص عندما أقوم بالاختيار من القائمة المنسدلة بدلاً من النقر المزدوج أو "تحريك الماوس" على اسقاط؟

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

المحلول

عند تحديده من القائمة المنسدلة لمربع التحرير والسرد، يتم إرجاع القيمة كسلسلة.لست متأكدًا من سبب ذلك، لكنني رأيت ذلك يحدث من قبل.أعتقد أن النقر المزدوج أو التمرير باستخدام عجلة الماوس يغير القيم من مجموعة القيم، في حين أن التحديد من القائمة المنسدلة يشبه تحرير قيمة الحقل كسلسلة.ثم، لديك تحويل القيمة من سلسلة إلى قيمة التعداد.

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