public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
 {
     if (context != null && context.Instance != null && provider != null)
     {
         IWindowsFormsEditorService service = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
         if (service != null)
         {
             GoogleMapsMarkerCollection mc = context.Instance as GoogleMapsMarkerCollection;
             if (mc != null)
             {
                 GoogleMapsMarker marker = value as GoogleMapsMarker;
                 if (marker != null)
                 {
                     service.CloseDropDown();
                     CommandSelectControl isc = new CommandSelectControl(service);
                     service.DropDownControl(isc);
                     if (isc.SelectedCommand != null)
                     {
                         if (isc.SelectedCommand.CommandId == EnumCommand.Delete)
                         {
                             mc.Remove(marker);
                         }
                         else if (isc.SelectedCommand.CommandId == EnumCommand.New)
                         {
                             mc.Add(new GoogleMapsMarker(mc.Owner));
                         }
                         value = marker;
                     }
                 }
             }
         }
     }
     return(value);
 }
 public PropertyDescriptorMapMarker(GoogleMapsMarker owner)
     : base(owner.uuid,
            new Attribute[] {
     new TypeConverterAttribute(typeof(ExpandableObjectConverter)),
     new EditorAttribute(typeof(TypeEditorDeleteMapMarker), typeof(UITypeEditor)),
     new RefreshPropertiesAttribute(RefreshProperties.All)
 })
 {
     _marker = owner;
 }