Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El dibujo propietario en Windows Forms, que también se conoce como dibujo personalizado, es una técnica para cambiar el aspecto de ciertos controles.
Nota:
La palabra "control" de este tema se usa para significar clases que derivan de Control o Component.
Normalmente, Windows controla la pintura automáticamente mediante la configuración de propiedades como BackColor para determinar la apariencia de un control. Con el dibujo del propietario, se toma el proceso de pintura, cambiando los elementos de apariencia que no están disponibles mediante propiedades. Por ejemplo, muchos controles permiten establecer el color del texto que se muestra, pero se limita a un solo color. El dibujo del propietario le permite hacer cosas como mostrar parte del texto en negro y parte en rojo.
En la práctica, el dibujo del propietario es similar al dibujo de gráficos en un formulario. Por ejemplo, podría usar métodos gráficos en un controlador para el evento del Paint formulario para emular un ListBox
control, pero tendría que escribir su propio código para controlar toda la interacción del usuario. Con el dibujo del propietario, el control utiliza tu código para dibujar su contenido, pero conserva todas sus capacidades intrínsecas. Puede usar métodos gráficos para dibujar cada elemento en el control o para personalizar algunos aspectos de cada elemento mientras usa la apariencia predeterminada para otros aspectos de cada elemento.
Dibujo personalizado en controles de Windows Forms
Para realizar el dibujo del propietario en los controles que lo admiten, normalmente establecerá una propiedad y controlará uno o varios eventos.
La mayoría de los controles que admiten el dibujo personalizado por el propietario tienen una propiedad OwnerDraw
o DrawMode
que indica si el control generará su evento o eventos relacionados con el dibujo cuando se pinta a sí mismo.
Los controles que no tienen una OwnerDraw
propiedad o DrawMode
incluyen el DataGridView
control , que proporciona eventos de dibujo que se producen automáticamente y el ToolStrip
control , que se dibuja mediante una clase de representación externa que tiene sus propios eventos relacionados con el dibujo.
Hay muchos tipos diferentes de eventos de dibujo, pero se produce un evento de dibujo típico para dibujar un solo elemento dentro de un control. El controlador de eventos recibe un EventArgs
objeto que contiene información sobre el elemento que se dibuja y las herramientas que se pueden usar para dibujarlo. Por ejemplo, este objeto normalmente contiene el número de índice del elemento dentro de su colección principal, un Rectangle que indica los límites de presentación del elemento y un objeto Graphics para invocar métodos de pintura. Para algunos eventos, el EventArgs
objeto proporciona información adicional sobre el elemento y los métodos a los que se puede llamar para pintar algunos aspectos del elemento de forma predeterminada, como el fondo o un rectángulo de foco.
Para crear un control reutilizable que contenga las personalizaciones dibujadas por el propietario, cree una nueva clase que derive de una clase de control que admita el dibujo del propietario. En lugar de controlar eventos de dibujo, incluya el código de dibujo personalizado en las sobrescrituras para el método o métodos On
EventName adecuados en la nueva clase. Asegúrese de llamar al método On
, o métodos, EventName de la clase base en este caso para que los usuarios del control puedan manejar eventos de dibujo personalizado y proporcionar personalización adicional.
Los siguientes controles de Windows Forms admiten el dibujo de propietario en todas las versiones de .NET Framework:
MenuItem (usado por MainMenu y ContextMenu)
Los controles siguientes solo admiten el dibujo de propietario en .NET Framework 2.0:
Los siguientes controles admiten el dibujo del propietario y son nuevos en .NET Framework 2.0:
En las secciones siguientes se proporcionan detalles adicionales para cada uno de estos controles.
Controles ListBox y ComboBox
Los controles ListBox y ComboBox te permiten dibujar elementos individuales en el control, ya sea todos en un solo tamaño o en diferentes tamaños.
Nota:
Aunque el CheckedListBox control se deriva del ListBox control , no admite el dibujo del propietario.
Para dibujar cada elemento del mismo tamaño, establezca la propiedad DrawMode
a OwnerDrawFixed y maneje el evento DrawItem
.
Para dibujar cada elemento con un tamaño diferente, establezca la propiedad DrawMode
a OwnerDrawVariable y maneje tanto los eventos MeasureItem
como DrawItem
. El MeasureItem
evento le permite indicar el tamaño de un elemento antes de que se produzca el DrawItem
evento para ese elemento.
Para obtener más información, incluidos ejemplos de código, consulte los temas siguientes:
Componente MenuItem
El componente MenuItem representa un único elemento de menú en un componente MainMenu o ContextMenu.
Para dibujar un MenuItem, establezca la propiedad OwnerDraw
en true
y gestione el evento DrawItem
. Para personalizar el tamaño del elemento de menú antes de que se produzca el DrawItem
evento, controle el evento del MeasureItem
elemento.
Para obtener más información, incluidos ejemplos de código, consulte los siguientes temas de referencia:
TabControl Control
El TabControl control permite dibujar fichas individuales en el control. El dibujo del propietario afecta solo a las pestañas; el TabPage contenido no se ve afectado.
Para dibujar cada pestaña en TabControl, establezca la propiedad DrawMode
en OwnerDrawFixed y controle el evento DrawItem
. Este evento se produce una vez para cada pestaña solo cuando la pestaña está visible en el control .
Para obtener más información, incluidos ejemplos de código, consulte los siguientes temas de referencia:
Componente ToolTip
El ToolTip componente permite dibujar el tooltip entero cuando se muestra.
Para dibujar un ToolTip, establezca la propiedad OwnerDraw
en true
y gestione el evento Draw
. Para personalizar el tamaño de ToolTip antes de que se produzca el evento Draw
, controle el evento Popup
y establezca la propiedad ToolTipSize en el controlador de eventos.
Para obtener más información, incluidos ejemplos de código, consulte los siguientes temas de referencia:
Control de ListView
El ListView control permite dibujar elementos individuales, subelementos y encabezados de columna en el control .
Para habilitar el dibujo personalizado en el control, establezca la propiedad OwnerDraw
true
.
Para dibujar cada elemento del control, maneje el evento DrawItem
.
Para dibujar cada subelemento o encabezado de columna en el control cuando la propiedad View está establecida en Details, maneje los eventos DrawSubItem
y DrawColumnHeader
.
Para obtener más información, incluidos ejemplos de código, consulte los siguientes temas de referencia:
Control de Vista de Árbol
El TreeView control permite dibujar nodos individuales en el control.
Para dibujar solo el texto mostrado en cada nodo, establezca la propiedad en DrawMode
y controle el evento OwnerDrawText para dibujar el texto.
Para dibujar todos los elementos de cada nodo, establezca la propiedad DrawMode
en OwnerDrawAll y gestione el evento DrawNode
para dibujar los elementos que necesite, como texto, iconos, casillas de verificación, signos más y menos, y líneas que conectan los diferentes nodos.
Para obtener más información, incluidos ejemplos de código, consulte los siguientes temas de referencia:
DataGridView Control
El DataGridView control permite dibujar celdas y filas individuales en el control.
Para dibujar celdas individuales, controle el CellPainting
evento.
Para dibujar filas o elementos individuales de filas, controle uno o ambos eventos RowPrePaint
y RowPostPaint
. El RowPrePaint
evento se produce antes de pintar las celdas de una fila y el RowPostPaint
evento se produce después de pintar las celdas. Puede controlar los eventos y el CellPainting
evento para pintar el fondo de fila, las celdas individuales y el primer plano de fila por separado, o puede proporcionar personalizaciones específicas donde las necesite y usar la pantalla predeterminada para otros elementos de la fila.
Para obtener más información, incluidos ejemplos de código, consulte los temas siguientes:
Cómo personalizar el aspecto de las celdas en el control DataGridView de Windows Forms
Cómo: Personalizar la apariencia de las filas en el control DataGridView de Windows Forms
Control de Barra de Herramientas
ToolStrip y los controles derivados permiten personalizar cualquier aspecto de su apariencia.
Para proporcionar representación personalizada para ToolStrip controles, establezca la propiedad Renderer
de un ToolStrip, ToolStripManager, ToolStripPanel o ToolStripContentPanel a un objeto ToolStripRenderer
y controle uno o varios de los muchos eventos de dibujo proporcionados por la clase ToolStripRenderer
. Como alternativa, establezca una Renderer
propiedad en una instancia de su propia clase derivada de ToolStripRenderer
, ToolStripProfessionalRenderero ToolStripSystemRenderer que implemente o invalide métodos On
específicos.
Para obtener más información, incluidos ejemplos de código, consulte los temas siguientes:
Cómo: Crear y configurar un renderizador personalizado para el control ToolStrip en Windows Forms
Procedimiento para dibujar un control ToolStrip personalizado
Consulte también
.NET Desktop feedback