/// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <param name="culture"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
        {
            String state = value as String;

            if (state == null)
            {
                return(base.ConvertFrom(context, culture, value));
            }

            if (state == String.Empty)
            {
                return(new RowHeaderColumnCollection());
            }

            String[] parts = state.Split('&');

            RowHeaderColumnCollection collection = new RowHeaderColumnCollection();

            foreach (string encRes in parts)
            {
                string[] props = Encoder.UrlDecode(encRes).Split('&');

                RowHeaderColumn r = new RowHeaderColumn();
                r.Title = Encoder.UrlDecode(props[0]);
                r.Width = Convert.ToInt32(Encoder.UrlDecode(props[1]));

                collection.Add(r);
            }

            return(collection);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <param name="culture"></param>
        /// <param name="value"></param>
        /// <param name="destinationType"></param>
        /// <returns></returns>
        public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
        {
            if (destinationType == null)
            {
                throw new ArgumentException("destinationType");
            }
            RowHeaderColumnCollection collection = value as RowHeaderColumnCollection;

            if (collection == null)
            {
                return(base.ConvertTo(context, culture, value, destinationType));
            }

            if (collection.designMode)
            {
                return("(Collection)");
            }

            ArrayList al = new ArrayList();

            foreach (RowHeaderColumn r in collection)
            {
                ArrayList properties = new ArrayList();
                properties.Add(r.Title);
                properties.Add(r.Width);

                al.Add(Encoder.UrlEncode(properties));
            }

            return(Encoder.UrlEncode(al));
        }