I have a custom ObjectCollection class in my custom control and a public property to access this collection.

//My custom Property
public ObjectCollection Items
    get { return itemCollection; }

//My custom collection class
public class ObjectCollection : IList, ICollection, IEnumerable

However, the values are NOT getting persisted. In design mode if I save strings in StringEditor by clicking OK button, close it, and reopen it, then the strings are gone.
Any idea?

The StringCollectionEditor is for editing an object of type System.Collections.Specialized.StringCollection or a class that inherits from it. It implements all the interfaces you have specified for your class, but have provide the methods that specifying those interface requires you to do?

See: http://msdn.microsoft.com/en-us/library/87d83y5b%28v=VS.80%29.aspx

Also, you may need to change "System.Windows.Forms.Design.StringCollectionEditor" to "System.Windows.Forms.Design.StringCollectionEditor, System.Design"