Controles comunes personalizados CSharp
# Controles comunes personalizados CSharp

La plataforma .NET desde su versión 1.1 ofrece la facilidad de poder generar controles comunes personalizados para satisfacer las necesidades de los desarrolladores que necesitan agregar, quitar o modificar el comportamiento, la funcionalidad y el diseño de cualquier control común (System.Windows.Forms.Control).

## Clase Control

En la clase Control (System.Windows.Forms.Control) se encuentran contenidos los siguientes controles comunes perzonalizables.

* AxHost
* ButtonBase
* DataGrid
* DataGridView
* DateTimePicker
* GroupBox
* Label
* ListControl
* ListView
* MdiClient
* MonthCalendar
* PictureBox
* PrintPreviewControl
* ProgressBar
* ScrollableControl
* ScrollBar
* Splitter
* StatusBar
* TabControl
* TextBoxBase
* ToolBar
* TrackBar
* TreeView
* WebBrowserBase

## Ejemplo

Suponiendo que se necesita hacer una representación dinámica de un gráfico, para el cual es necesario que los vértices y aristas se comporten como botones para que se pueda hacer click sobre ellos; es necesario personalizar un botón (System.Windows.Forms.Button) de la siguiente manera:

### Vértice

Se representa como un circulo con un identificador alfanumérico interno; plano, sin relleno (transparente), sin cambios al hacer click sobre el.

### Arista

Se representa como una linea recta que une a 2 vértices en cualquier parte del área cliente; con relleno, sin cambios al hacer click sobre ella.

**Eventos personalizados**


   Hay que tener en cuenta que por definición en el método System.Drawing.Drawing2D.GraphicsPath.AddLine agrega una linea con grosor cero (sin volumen), ya que normalmente se espera que la región se forme a partir de una figura cerrada, por lo que es necesario especificar un ancho para que esta linea tome un grosor mayor a cero y con esto el nuevo botón sea visible en el área cliente al momento de dibujarlo.
