Subscribe to IDesignerHost.LoadComplete event. Make any changes to the designer host (like adding or deleting components) only after this event, or else the design document will not be made "dirty".
IDesignerSerializationManager.SerializationComplete will tell you when Code is deserialized into design time components.
Contributed from George Shepherd's Windows Forms FAQ