When you declare a Class it has no members. To be added to a form it must at least inherit Component class, this has very few members, and if it is a UI component it must at least inherit Control class, already quite a few members is defined here, not as many as UserControl class but still all common to all controls. This is the common approach to writing derived control classes (that is Control or more specific), for compound components that consist of multiple child controls UserControl class is the best start. From there you can Shadow and hide properties from code and designer usage. Going from a empty class to usable control by implementing the necessary interfaces and designers from scratch will probably take you forever.