Cambiar colores del MenuStrip y otros controles de windows

Hola, o hi en inglish, mostrare un ejemplo de como cambiar el color de los menuStrip en VB.NET, ustedes haran la conversion a otros lenguajes, recuerden que esto se puede hacer en cualquier lenguaje aderido a la CLS (Common Languege Specification), no se si lo escribi bien, pero es la Especificacion comun del lenguaje, esto hace que todos los lenguajes de .net tengan soporte para las mismas librerias y “casi”, se logren los mismos resultados con cualesquiera lenguaje que se trabaje, siempre y cuando esten bajo la plataforma .NET.

Bien a lo que nos convoca:

1) Paso 1; Deberemos crear una clase de nombre (lo que quieran es su programa) Colores, como? asi:

Public Class Colores

End Class

2) Paso 2; Ahora heredaremos la clase que trae .NET llamada “ProfessionalColorTable”, asi;

Public Class Colores

Inherits ProfessionalColorTable

End Class

3) Paso 3; Sobreescribiremos las propiedades que contiene la clase (o como dice .NET “Overrides”) y que establecen el color o los colores de los controles, se preguntaran y que a controles les puedes cambiar el color??, mas adelante, ahora sigamos;

Public Class Colores

Inherits ProfessionalColorTable

Public Overrides ReadOnly Property ButtonCheckedGradientBegin() As System.Drawing.Color

Get
Return Color.AliceBlue

End Get

End Property

End Class

Como veran la propiedad ButtonCheckedGradientBegin es sobrescrivida, y es establecida a un color pasado en return, al momento de escribir property, veran como la super duper ayuda de MICROSOFT VISUAL STUDIO .NET 2005, o la version que tengan, les mostrara la lista completa que las propiedades que pueden modificar a su gusto, pero?? y cual corresponde a que parte del control??, esto talvez les ayudara:

Nombre Descripción
Propiedad pública ButtonCheckedGradientBegin Obtiene el color de inicio del degradado utilizado cuando se activa el botón.
Propiedad pública ButtonCheckedGradientEnd Obtiene el color final del degradado utilizado cuando se activa el botón.
Propiedad pública ButtonCheckedGradientMiddle Obtiene el color medio del degradado utilizado cuando se activa el botón.
Propiedad pública ButtonCheckedHighlight Obtiene el color sólido utilizado cuando se activa el botón.
Propiedad pública ButtonCheckedHighlightBorder Obtiene el color de borde que se va a utilizar con ButtonCheckedHighlight.
Propiedad pública ButtonPressedBorder Obtiene el color de borde que se va a utilizar con los colores ButtonPressedGradientBegin, ButtonPressedGradientMiddle y ButtonPressedGradientEnd.
Propiedad pública ButtonPressedGradientBegin Obtiene el color de inicio del degradado utilizado cuando se presiona el botón.
Propiedad pública ButtonPressedGradientEnd Obtiene el color final del degradado utilizado cuando se presiona el botón.
Propiedad pública ButtonPressedGradientMiddle Obtiene el color medio del degradado utilizado cuando se presiona el botón.
Propiedad pública ButtonPressedHighlight Obtiene el color sólido utilizado cuando se presiona el botón.
Propiedad pública ButtonPressedHighlightBorder Obtiene el color de borde que se va a utilizar con ButtonPressedHighlight.
Propiedad pública ButtonSelectedBorder Obtiene el color de borde que se va a utilizar con los colores ButtonSelectedGradientBegin, ButtonSelectedGradientMiddle y ButtonSelectedGradientEnd.
Propiedad pública ButtonSelectedGradientBegin Obtiene el color de inicio del degradado utilizado cuando se selecciona el botón.
Propiedad pública ButtonSelectedGradientEnd Obtiene el color final del degradado utilizado cuando se selecciona el botón.
Propiedad pública ButtonSelectedGradientMiddle Obtiene el color medio del degradado utilizado cuando se selecciona el botón.
Propiedad pública ButtonSelectedHighlight Obtiene el color sólido utilizado cuando se selecciona el botón.
Propiedad pública ButtonSelectedHighlightBorder Obtiene el color de borde que se va a utilizar con ButtonSelectedHighlight.
Propiedad pública CheckBackground Obtiene el color sólido que se utilizará cuando se active el botón y se utilicen los degradados.
Propiedad pública CheckPressedBackground Obtiene el color sólido que se utilizará cuando se active y seleccione el botón y se utilicen los degradados.
Propiedad pública CheckSelectedBackground Obtiene el color sólido que se utilizará cuando se active y seleccione el botón y se utilicen los degradados.
Propiedad pública GripDark Obtiene el color que se va a utilizar para los efectos de sombra del control (controlador de movimiento).
Propiedad pública GripLight Obtiene el color que se va a utilizar para los efectos de resaltado del control (controlador de movimiento).
Propiedad pública ImageMarginGradientBegin Obtiene el color de inicio del degradado utilizado en el margen de la imagen de un ToolStripDropDownMenu.
Propiedad pública ImageMarginGradientEnd Obtiene el color final del degradado utilizado en el margen de la imagen de un ToolStripDropDownMenu.
Propiedad pública ImageMarginGradientMiddle Obtiene el color medio del degradado utilizado en el margen de la imagen de un ToolStripDropDownMenu.
Propiedad pública ImageMarginRevealedGradientBegin Obtiene el color de inicio del degradado utilizado en el margen de la imagen de un ToolStripDropDownMenu cuando se revela un elemento.
Propiedad pública ImageMarginRevealedGradientEnd Obtiene el color final del degradado utilizado en el margen de la imagen de un ToolStripDropDownMenu cuando se revela un elemento.
Propiedad pública ImageMarginRevealedGradientMiddle Obtiene el color medio del degradado utilizado en el margen de la imagen de un ToolStripDropDownMenu cuando se revela un elemento.
Propiedad pública MenuBorder Obtiene el color que es el color de borde que se va a utilizar en MenuStrip.
Propiedad pública MenuItemBorder Obtiene el color de borde que se va a utilizar con ToolStripMenuItem.
Propiedad pública MenuItemPressedGradientBegin Obtiene el color de inicio del degradado utilizado cuando se presiona un ToolStripMenuItem de nivel superior.
Propiedad pública MenuItemPressedGradientEnd Obtiene el color final del degradado utilizado cuando se presiona un ToolStripMenuItem de nivel superior.
Propiedad pública MenuItemPressedGradientMiddle Obtiene el color medio del degradado utilizado cuando se presiona un ToolStripMenuItem de nivel superior.
Propiedad pública MenuItemSelected Obtiene el color sólido que se va a utilizar cuando se seleccione un ToolStripMenuItem distinto del ToolStripMenuItem de nivel superior.
Propiedad pública MenuItemSelectedGradientBegin Obtiene el color de inicio del degradado utilizado cuando se selecciona el ToolStripMenuItem.
Propiedad pública MenuItemSelectedGradientEnd Obtiene el color final del degradado utilizado cuando se selecciona el ToolStripMenuItem.
Propiedad pública MenuStripGradientBegin Obtiene el color de inicio del degradado utilizado en el control MenuStrip.
Propiedad pública MenuStripGradientEnd Obtiene el color final del degradado utilizado en el control MenuStrip.
Propiedad pública OverflowButtonGradientBegin Obtiene el color de inicio del degradado utilizado en el control ToolStripOverflowButton.
Propiedad pública OverflowButtonGradientEnd Obtiene el color final del degradado utilizado en el control ToolStripOverflowButton.
Propiedad pública OverflowButtonGradientMiddle Obtiene el color medio del degradado utilizado en el control ToolStripOverflowButton.
Propiedad pública RaftingContainerGradientBegin Obtiene el color de inicio del degradado utilizado en el control ToolStripContainer.
Propiedad pública RaftingContainerGradientEnd Obtiene el color final del degradado utilizado en el control ToolStripContainer.
Propiedad pública SeparatorDark Obtiene el color que se va a utilizar para los efectos de sombra en el ToolStripSeparator.
Propiedad pública SeparatorLight Obtiene el color que se va a utilizar para los efectos de resaltado en el ToolStripSeparator.
Propiedad pública StatusStripGradientBegin Obtiene el color de inicio del degradado utilizado en el control StatusStrip.
Propiedad pública StatusStripGradientEnd Obtiene el color final del degradado utilizado en el control StatusStrip.
Propiedad pública ToolStripBorder Obtiene el color de borde que se va a utilizar en el borde inferior de ToolStrip.
Propiedad pública ToolStripContentPanelGradientBegin Obtiene el color de inicio del degradado utilizado en el control ToolStripContentPanel.
Propiedad pública ToolStripContentPanelGradientEnd Obtiene el color final del degradado utilizado en el control ToolStripContentPanel.
Propiedad pública ToolStripDropDownBackground Obtiene el color de fondo sólido del ToolStripDropDown.
Propiedad pública ToolStripGradientBegin Obtiene el color de inicio del degradado utilizado en el fondo de ToolStrip.
Propiedad pública ToolStripGradientEnd Obtiene el color final del degradado utilizado en el fondo de ToolStrip.
Propiedad pública ToolStripGradientMiddle Obtiene el color medio del degradado utilizado en el fondo de ToolStrip.
Propiedad pública ToolStripPanelGradientBegin Obtiene el color de inicio del degradado utilizado en el control ToolStripPanel.
Propiedad pública ToolStripPanelGradientEnd Obtiene el color final del degradado utilizado en el control ToolStripPanel.
Propiedad pública UseSystemColors Obtiene o establece un valor que indica si utilizar SystemColors en lugar de colores que coincidan con el estilo visual actual.

por otro lado, y como les dije esta clase de framework .net, le proporciona los colores utilizados para los elementos de visualización de Microsoft Office, y como usar la clase que hemos hecho??, bien miren:

4) Paso y (y ultimo): para usar la clase con las definiciones de colores que esten dispuestos a cambar (los colores que no definan, se usara los que esten establecidos por defecto en la case “ProfessionalColorTable”, no piensen que quedan en color blanco), para usarlo, usaremos un ejemplo bien practico, en el evento load de un formulario y supuniendo que tenemos un menu llamado “main_menu”, miren, asi;

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
main_menu.Renderer = New ToolStripProfessionalRenderer(New Colores)
End Sub

Como veran se crea una nueva instancia de la clase Colores la quien heredo de la clase “ProfessionalColorTable”, instancia la cual fue pasada como parametro al constructor de la case “ToolStripProfessionalRenderer” y el resultado de esto se paso a la propiedad renderer del objeto main_menu, el cual es una propiedad de tipo ToolStripRenderer, la cual es clase base abstracta de las anteriores, como ven calza todo, :), espero que les sirva, pues cuando quise hacer esto, no enconstraba informacion de esto, pero como buen chileno, busco en todas partes menos donde se debe si tiene el MSDN Visual Studio .NET miren esto

ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.es/dv_fxmclictl/html/94e7d7bd-a752-441c-b5b3-7acf98881163.htm

Ejecuntenlo desde menu->ejecutar y hasta la proxima, chao ;)

Escrito en VB.NET.

Una respuesta para “Cambiar colores del MenuStrip y otros controles de windows”

  1. Pris Dice:

    Muy, muy, muy aclarador. Muy Importante. Muy a menudo nos encontramos con problemas de ese tipo…
    Muchísimas gracias.

Escribe un comentario