---
title: Managing form controls
related:
  - https://docs.kentico.com/13/custom-development/extending-the-administration-interface/developing-form-controls/defining-form-control-parameters.md
  - https://docs.kentico.com/13/custom-development/extending-the-administration-interface/developing-form-controls/example-developing-custom-form-controls.md
  - https://docs.kentico.com/13/custom-development/extending-the-administration-interface/developing-form-controls/reference-field-editor.md
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

The **Form controls** tab of the **Administration interface** application allows you to view the catalog of available form controls. Click **New form control** to register custom form controls.

When you edit () a form control, the following properties are available on the **General** tab:

| General       |                                                                                                                                                                                                                                                       |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Display name  | Sets the name of the form control used in the administration interface, for example when selecting form controls in the field editor.                                                                                                                 |
| Code name     | Serves as a unique identifier of the form control (for example in the API).                                                                                                                                                                           |
| Inherit from  | Only available for [inherited form controls](https://docs.kentico.com/13/custom-development/extending-the-administration-interface/developing-form-controls/inheriting-from-existing-form-controls.md). Displays the name of the parent form control. |
| Description   | A text description of the control or comments for other administrators.                                                                                                                                                                               |
| High priority | When selecting a form control in the field editor, controls with high priority appear at the top of the list and are highlighted.<br>Only enable this option for form controls that are most commonly used.                                           |

### Control source

> **Info:** **Note**: The _Control source_ properties are not available for [inherited form controls](https://docs.kentico.com/13/custom-development/extending-the-administration-interface/developing-form-controls/inheriting-from-existing-form-controls.md), which always use the same source as their parent.

The _Control source_ properties determine how the form control is implemented. The following options are available:

- **Web user control** – a user control file in the Xperience administration project. The **File name** property must contain the relative path of the _.ascx_ file. For example: _\~/CMSFormControls/Basic/TextBoxControl.ascx_
- **Assembly class** – a control class compiled in an assembly, specified by the **Control class** properties:

  - **Assembly name** – the name of the assembly where the control class is implemented.
  - **Class** – the exact class (including any namespaces) that defines the content and functionality of the form control.

> **Tip:** **Control source recommendations**
>
> When adding custom form controls, we recommend that you consider the source options in the following order:
>
> 1. [Inherited control](https://docs.kentico.com/13/custom-development/extending-the-administration-interface/developing-form-controls/inheriting-from-existing-form-controls.md) – allows you to add a specialized control based on one of the existing form controls (without needing to write custom code in most cases).
>
> 2. Assembly class – recommended in general for non-inherited form controls. Adding the form control class into a custom assembly provides cleaner separation of your code from the default Xperience project, and does not require runtime compilation which can slow down the website.
>
> 3. Web user control – use for controls with extensive ASCX markup, or if you need a form control without dependencies on a custom code assembly.

### Control extender

Extenders are only available for [inherited form controls](https://docs.kentico.com/13/custom-development/extending-the-administration-interface/developing-form-controls/inheriting-from-existing-form-controls.md).

By creating an extender class, developers can adjust the functionality of an inherited form control beyond the configuration options provided by the parent's [parameters](https://docs.kentico.com/13/custom-development/extending-the-administration-interface/developing-form-controls/defining-form-control-parameters.md). The extender adds custom code that runs in addition to the code of the parent control. For example, you can use extenders to dynamically set the form control's properties or assign handler methods to events that occur during the control's life cycle (e.g. form validation).

To add an extender, you need to specify the extender class using the corresponding properties:

- **Assembly name** – the name of the assembly where the extender is implemented.
- **Class** – the exact class (including any namespaces) that defines the extender's functionality.

### Control scope

Use the properties in the **Use control for** section to choose the data types for which the form control is available. Possible data types for fields include standard options (Text, Long text, Decimal, Integer, Long integer, Boolean, Date-time), as well as several other options:

| Unique identifier (GUID) | Store 32‑character strings used as globally unique identifiers for objects.                                                                                                                                                                                                                 |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| File                     | Provide file management.                                                                                                                                                                                                                                                                    |
| Attachments              | Allow the management of [page attachments](https://docs.kentico.com/13/developing-websites/defining-website-content-structure/managing-page-types/configuring-grouped-page-attachments.md).                                                                                                 |
| Pages                    | Store references to one or more pages in the website content tree. Allow reusing of content from other pages. See [Reusing existing page content](https://docs.kentico.com/13/developing-websites/defining-website-content-structure/managing-page-types/reusing-existing-page-content.md). |

The **Show control in** determines in which types of forms the control can be used:

| Page types             | Allows use in [page type](https://docs.kentico.com/13/developing-websites/defining-website-content-structure/managing-page-types.md) fields, which you can edit in **Page types -> edit page type -> Fields**. The editing forms are displayed when editing pages on the **Content** tab in the **Pages** application.                                                                                                                                                                                                                                          |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Custom tables          | Allows the control in [custom table](https://docs.kentico.com/13/developing-websites/defining-website-content-structure/managing-custom-tables.md) fields, which you can edit in **Custom tables -> edit custom table -> Fields**. The corresponding data editing form is displayed in the **Custom table data** application.                                                                                                                                                                                                                                   |
| System tables          | Allows use in the fields of system objects. You can edit the fields in **Modules -> Edit module -> Classes -> Edit class -> Fields**. The editing forms of system objects are located in various sections of the administration interface.                                                                                                                                                                                                                                                                                                                      |
| Reports                | Allows the control for the user interface of [report parameters](https://docs.kentico.com/13/configuring-xperience/working-with-system-reports/defining-report-parameters.md), which you can define in **Reporting -> edit a report -> Parameters**. The reporting parameter form is displayed when viewing reports in the administration interface.                                                                                                                                                                                                            |
| Controls and web parts | Allows the control to be used for the properties of [web parts](https://docs.kentico.com/13/custom-development/extending-the-administration-interface/developing-web-parts.md) and [dashboard widgets](https://docs.kentico.com/13/custom-development/extending-the-administration-interface/setting-up-widget-dashboards/creating-dashboard-widgets.md), as defined in the **Web parts** or **Widgets** tabs of the **Administration interface** application. This editing form provides the configuration dialog of individual web parts or widget instances. |

## Defining form control parameters

On the **Properties** tab of the form control editing interface, you can define parameters. See [Defining form control parameters](https://docs.kentico.com/13/custom-development/extending-the-administration-interface/developing-form-controls/defining-form-control-parameters.md) for further information.

## Previewing form controls

When editing form controls, you can use the **View** tab to check the appearance of the control in a sample 1-field form.

## Finding where form controls are used

The **Usage** tab of the form control editing interface allows you to find all objects in the system that use the given control in their form. You can use the **Object type** filter to narrow down the list to specific types of forms (Page type editing forms, Web part property definitions, etc.).
