كيف يمكنني عرض سلاسل مخصصة عند تحديد عناصر متعددة؟

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

  •  10-07-2019
  •  | 
  •  

سؤال

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

ولدي UITypeEditor للخاصية "EffectiveDiameter" على هذه الكائنات المشتركة. ومن يتتبع حدات (متر مقابل قدما) ويفعل بعض أشياء لطيفة على ذبابة. ومع ذلك، عندما يختار شخص ما اثنين أو ثلاثة أشياء عادية، EffectiveDiameter فارغ، على الرغم من أنه يقيم إلى سلسلة نصية نفسها.

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

و

/// <summary>
/// The default containing class for all Unit-Management Conversion classes.
/// </summary>
[
 Serializable,
 EditorAttribute(typeof(umConversionTypeEditor), typeof(UITypeEditor)),
 TypeConverter(typeof(umConversionTypeConverter)),
]
public class umConversion
{
    ...
}


public class umConversionTypeEditor : UITypeEditor
{
    ...
}



// Now, in my designer class, I have ...
private double _effectiveDiameter { get; set; }

[DisplayName("Effective Diameter")]
public virtual umConversion EffectiveDiameter
{
    get
    {
            umConversion ret = new umConversion (_effectiveDiameter);
            ret.MeasureInSI = _si;
            return ret;
        }
        set
        {
           _effectiveDiameter = value.ImperialUnits;
        }
    }
}

و

إذا كنت اختر العديد من بلدي كائنات مخصصة - مع كل نفس القطر الفعال - كيف يمكنني الحصول على EffectiveDiameter لعرضه في PropertyGrid مثل مرساة لا؟ الآن، هذا المجال هو دائما فارغة.

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

المحلول

ومن وصفك يبدو أنك تتحدث عن effectiveDiameter من نوع مزدوجة. ولكن في عينتك كنت تظهر UITypeEditor للطبقة umConversion. لذا، يرجى توضيح.

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

نصائح أخرى

ضع سمة TypeConverter على كل الممتلكات جدا ..

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