Hi folks, I've create a UserControl that could return a property of type AddressCollection - a collection of Address classes (derived from CollectionBase). I've also created an AddressTypeConverter that's being derived from TypeConverter as well as an AddressCollectionEditor that's being derived from CollectionEditor as follows: ////////////////////////////////////////AddressCollectionEditor public class AddressCollectionEditor : CollectionEditor { public AddressCollectionEditor(Type type) : base(type){} protected override bool CanSelectMultipleInstances(){return false;} protected override Type CreateCollectionItemType(){return typeof(Address);} } ////////////////////////////////////////AddressTypeConverter [Serializable] public class AddressTypeConverter : TypeConverter { public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { if (destinationType == typeof(InstanceDescriptor)) return true; return base.CanConvertTo(context, destinationType); } public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType) { if (destinationType == typeof(InstanceDescriptor)) { Address addr = value as Address; if (addr == null) return new InstanceDescriptor(typeof(Address).GetConstructor(System.Type.EmptyTypes), null); return new InstanceDescriptor(typeof(Address).GetConstructor(new Type[] { typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string) }), new string[] { addr.Type, addr.Street1, addr.Street2, addr.City, addr.StateProvince, addr.ZipPostalCode, addr.CountryRegion }); } return base.ConvertTo(context, culture, value, destinationType); } } ////////////////////////////////////////AddressCtrl public partial class AddressCtrl : UserControl { //removed for clarity.... [Category("Misc"), Description("Get a collection of addresses.")] [Editor(typeof(AddressCollectionEditor), typeof(UITypeEditor))] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public AddressCollection Addresses { get { return m_coll; } } } /////////////////////