The official Fatica Labs Blog! RSS 2.0
# Tuesday, July 31, 2007

E' un po' che uso questa strategia, soprattutto perchè mi piace il componente propertygrid, che permette di editare le proprietà pubbliche di un oggetto.  Se una delle proprietà è un enum, viene graziosamente presentato un combobox per scegliere il valore possibile. Tuttavia le scritte presentate sono i nomi interni dell'enum, che possono essere un po' criptici per l'utente finale, e peggio a volte devono essere tradotti. Visto che non si può derivare una classe da un enum per fare l'override di ToString(), una ( possibile ) soluzione è quella di utilizzare un TypeConverter

xes: 

    [TypeConverter(typeof(SheetForecastingEnumConverter))]
    public enum SheetForecastingEnum
    {
        None,
        Auto,
        UserSelection
    }

 

quindi si implementa la classe del converter: 

 

class SheetForecastingEnumConverter : TypeConverter
    {
        public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
        {
            if (value is string)
            {
                switch (value)
                {
                    case "None":
                        return SheetForecastingEnum.None;
                   ........ // altri case per i vari valori
                }
            }
            return base.ConvertFrom(context, culture, value);
        }
        public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
        {
            if (sourceType == typeof(string))
                return true;
            return base.CanConvertFrom(context, sourceType);
        }
        public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
        {
            //show combobox
            return true;
        }
        public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
        {
            //show non editable combobox
            return true;
        }
        public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
        {
            return new StandardValuesCollection
                (
                    new SheetForecastingEnum[] { SheetForecastingEnum.Auto, SheetForecastingEnum.None, SheetForecastingEnum.UserSelection }
                );
        }
        public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
        {
            if (destinationType == typeof(string) && value != null)
            {

                SheetForecastingEnum ct = (SheetForecastingEnum)value;
                switch (ct)
                {
                    case SheetForecastingEnum.None:
                        return "Nessuno";

                    ......
                  
                    default:
                        return "?";

                }
            }
            else
                return base.ConvertTo(context, culture, value, destinationType);
        }
    }

ed il gioco è fatto. 

Tuesday, July 31, 2007 4:58:00 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] - Trackback

# Friday, July 27, 2007

Un interessante catalogo di antipattern. Chi non ne ha collezionato almeno uno scagli la prima pietra.  Al momento sono in forte battaglia per evitare la Analysis Paralysis, ed anche se sto combattendo con un gigante sono convinto che, in qualche modo, me la caverò.  Per certo invece riuscirò sempre ad evitare l' Architets Don't Code, perchè forse non sarò un bravo architetto, ma a smettere di scrivere codice non ci riesco.

 

Friday, July 27, 2007 2:01:00 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] - Trackback

# Wednesday, July 25, 2007

Sorry for all the people using it. At the moment I have no more time to mantain Deblector. I cannot release it as an Open Source project because the code is still messy. May be this will change in the future, but at the moment no promises.

 

Wednesday, July 25, 2007 8:00:00 AM (GMT Daylight Time, UTC+01:00)  #    Comments [0] - Trackback
Cose che non riesco a finire
# Friday, July 20, 2007

Come back soon....

 

Er Fatica è stanco...

Friday, July 20, 2007 10:09:00 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] - Trackback

Archive
<July 2007>
SunMonTueWedThuFriSat
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2010
Felice Pollano
Sign In
Statistics
Total Posts: 67
This Year: 41
This Month: 2
This Week: 0
Comments: 35
This blog visits
Locations of visitors to this page
All Content © 2010, Felice Pollano
DasBlog theme 'Business' created by Christoph De Baene (delarou) and modified by Felice Pollano