First, at the point where you need to reset the DataSource Property of the ComboBox ... because your Collection has changed ... try this:
comboBox1.DataSource = null;
comboBox1.DataSource = customStringCollection;
comboBox1.ResetBindings();
Second, I suggest you implement 'INotifyCollectionChanged rather than 'INotifyPropertyChanged:
public class CustomStringCollection : StringCollection, INotifyCollectionChanged
{
public event NotifyCollectionChangedEventHandler CollectionChanged;
public new void Add(string item)
{
base.Add(item);
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, this));
}
public new void Remove(string item)
{
base.Remove(item);
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, this));
}
protected virtual void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
{
var handler = CollectionChanged;
if (handler != null) handler(this, e);
}
}
Finally, I suggest you update the custom 'Setting when your Application closes in a FormClosing EventHandler using the current data in the custom collection.