User controls Vs. Custom controls

What is a custom control?

A custom control is a loosely coupled control defined in a class, which derives from Control. The UI of the custom control is generally defined in a Resource Dictionary inside the resource file. They are created according to the requirement of the business. If you want to change the functionality of existing controls, such as a button or label, you can directly derive the new class with these existing classes and can change their default behaviour. We can create themes for a custom control and reuse it in various projects very easily.

What is user control?

The base UserControl is nothing but a Custom Control that you derive to create a control UI specific to your application. It provide the reusability of design and are created in the same way as a web form. They have an .ascx extension. User controls are quiet helpful if they have to be used only for a particular website. They have a visual interface. These controls are loaded at the runtime, and thus cannot be found in the toolbox. They offer an easy way to partition and reuse common user interfaces across ASP.NET Web applications. They use the same Web Forms programming model on which a Web Forms page works.

CustomControl Vs UserControl

The main difference between Custom Control and User Control is that they inherit from different levels in the inheritance tree . A Custom Control generally inherits from the System.Windows.Controls.Control class. You may derive from a different custom control depending on your requirement. A UserControl inherits from the System.Windows.Controls.UserControls class, which inherits from the base "Control" class. Custom control is designed for single-application scenarios because if the same control needs to be used in more than one application, it introduces redundancy and maintenance problems. While UserControl designed so that it can be used by more than one application. It can distributed easily and without problems associated with redundancy and maintenance . CustomControl is a loosely coupled control w.r.t code and UI while UserControl is a tightly coupled control w.r.t code and UI. When using CustomControl UI can be changed in different projects but for a UserControl UI is fixed and can't have different looks in different project. Moreover, creating a custom control requires in-depth knowledge of Silverlight UI Model whereas UserControl does not require in-depth knowledge of the UI Model.