.صافي PropertyGrid DropDownList - عودة قيمة مختلفة من إظهار القيمة

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

سؤال

كنت تريد أن تكون قادرة على أن تظهر في propertygrid على dropdownlist أن تظهر بعض "السلسلة" القيمة ولكن عودة "int" قيمة.

على سبيل المثال, دعونا مجموعة حصلت على هذه الدرجة :

public class MyObjectOptions : StringConverter
{
    public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
    {
        return true;
    }

    public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
    {
        MyObjectCollection mm = new MyObjectCollection();

        List<String> names = new List<String>
        foreach (MyObject m in mm)
        {
            m.Id // Need to store this somewhere ...
            names.Add(m.Name);
        }

        return new StandardValuesCollection(name);
    }

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

هنا هو بلدي فئة تستخدم في propertygrid التحكم

public class MyObjectProperty
{
    [TypeConverter(typeof(MyObjectOptions))]
    public int Id
    {
        get { return this.id; }
        set { this.id = value; }
    }
}

كما ترون, كنت ترغب في تخزين معرف الكائن ، ولكن أريد أن تظهر انها اسم في dropdownlist ...أحاول استخدام hashtable لكنه لا يعمل ...

BTW أنا استخدم الإصدار 3.5 من .صافي ولكن أنا فقط استخدام WinForm (لا WPF).

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

المحلول

لا يمكنك استخدام GetStandardValues على ذلك.هذه الطريقة قد تكون مفيدة إذا كان لديك لتقييد القيم الصحيحة إلى دعنا نقول 1 و 5 و 10.

إذا كنت تريد أن تظهر السلاسل في قيمة الممتلكات الخاصة بك, تحتاج فقط إلى تجاوز ConvertTo و ConvertFrom أساليب من TypeConverter.على PropertyGrid استخدام تحويل السلاسل في القائمة المنسدلة.

عن hashtable يمكنك تخزينه في TypeConverter إذا كان المحتوى هو ثابت.إذا كان ديناميكية أفضل أن تترك الهدف سبيل المثال الشبكة إدارتها.من تحويل, سوف تكون قادرة على الوصول إليه من خلال TypeDescriptorContext.الملكية سبيل المثال.

على أمل أن يساعد.

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