If you want to create a completely custom control to use on a Windows Form, you should inherit from the Control class. While inheriting from the Control class requires that you perform more planning and implementation, it also provides you with the largest range of options. When inheriting from Control, you inherit the very basic functionality that makes controls work. The functionality inherent in the Control class handles user input through the keyboard and mouse, defines the bounds and size of the control, provides a windows handle, and provides message handling and security. It does not incorporate any painting, which in this case is the actual rendering of the graphical interface of the control, nor does it incorporate any specific user interaction functionality. You must provide all of these aspects through custom code.
The dialog boxes and menu commands you see might differ from those described in Help depending on your active settings or edition. To change your settings, choose Import and Export Settings on the Tools menu. For more information, see Customizing Development Settings in Visual Studio.
To create a custom control
Create a new Windows Application or Windows Control Library project.
From the Project menu, choose Add Class.
In the Add New Item dialog box, click Custom Control.
A new custom control is added to your project.
Press F7 to open the Code Editor for your custom control.
Modify the code to incorporate any custom painting you want for your control.
For information about writing code to render graphics for controls, see Custom Control Painting and Rendering.
Implement any custom methods, properties, or events that your control will incorporate.
Save and test your control.
Varieties of Custom Controls
How to: Inherit from the UserControl Class
How to: Inherit from Existing Windows Forms Controls
How to: Author Controls for Windows Forms
Troubleshooting Inherited Event Handlers in Visual Basic
Developing Windows Forms Controls at Design Time