Usuario
Color de un MenuItem pulsado

Pregunta
-
en la imagen que he subido se puede apreciar que no se ven las letras del menu que he pulsado porque son blancas, se puede hacer algo para que las letras tengan otro color cuando hayas pulsado el menu:
http://www.uploadfilesystem.com//viewimage.php?file=/imagenes/10/03/08/sIh60868.jpg
saludos
Todas las respuestas
-
hola
debes usar la propiedad ForeColor del item del menu
esta es la que define el color de la fuente
puedes cambairla en tiempo de diseño, o cuando haces click en el item del menu
Private Sub mnuFile_Click(....)
mnuFile.ForeColor = Color.Black
' aqui pones el resto de tu codigo
End Sub
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
-
Buenas Davsol
Lo que puedes hacer es controlar el evento MouseEnter del elemento del menu para que cuando el raton entre en el, el color de las letras cambie, algo así:
Private Sub ElementoMenu_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ElementoMenu.MouseEnter ElementoMenu.ForeColor = Color.Red End Sub
Y también deberías controlar que al salir el ratón vuelva a dejar el texto del color original:
Private Sub ElementoMenu_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles ElementoMenu.MouseLeave ElementoMenu.ForeColor = Color.Black End Sub
Recuerda que debes cambiar ElementoMenu por el nombre del item de tu menú que quieras cambiar.
Un saludo y espero que te funcione! -
Hola davsol, tienes que controlar los eventos Mouseenter y Mouseleave:
Revisa este ejemplo:
private void Form1_Load(object sender, EventArgs e) { foreach (ToolStripMenuItem t in menuStrip1.Items) { CambiarColor(t.DropDownItems); } } private void CambiarColor(ToolStripItemCollection menu) { foreach (ToolStripMenuItem m in menu) { if (m.HasDropDownItems) CambiarColor(m.DropDownItems); m.MouseEnter += toolStripMenuItem1_MouseEnter; m.MouseLeave += toolStripMenuItem1_MouseLeave; } } private void toolStripMenuItem1_MouseEnter(object sender, EventArgs e) { ((ToolStripMenuItem)sender).ForeColor = Color.Red; } private void toolStripMenuItem1_MouseLeave(object sender, EventArgs e) { ((ToolStripMenuItem)sender).ForeColor = Color.Black; }
Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
Si la respuesta te ha sido util Votala.
Mi Blog: Jtorrecilla
Enlace a Faq de Winforms en Ingles Muy bueno- Editado jtorrecillaModerator martes, 9 de marzo de 2010 14:26 cORRECION
-
-
-
-
Davsol, que errores te da el codigo?, yo lo probe y no me salio ningun error.
Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
Si la respuesta te ha sido util Votala.
Mi Blog: Jtorrecilla
Enlace a Faq de Winforms en Ingles Muy bueno -
-
Hola acabo de hacer una pequeña correcion de una linea que sobraba, pero el resto de codigo me funciona perfectamente.
Podrias poner tu trozo de codigo para ver que falla?
Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
Si la respuesta te ha sido util Votala.
Mi Blog: Jtorrecilla
Enlace a Faq de Winforms en Ingles Muy bueno -
si ,mira es este:
Private Sub PartidosToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PartidosToolStripMenuItem.Click
private void Form1_Load(object sender, EventArgs e)
{foreach (ToolStripMenuItem t in menuStrip1.Items){ CambiarColor(t.DropDownItems);}}
private void CambiarColor(ToolStripItemCollection menu)
{foreach (ToolStripMenuItem m in menu){ if (m.HasDropDownItems)CambiarColor(m.DropDownItems);
m.MouseEnter += toolStripMenuItem1_MouseEnter;
m.MouseLeave += toolStripMenuItem1_MouseLeave;
}
}
private void toolStripMenuItem1_MouseEnter(object sender, EventArgs e)
{
((ToolStripMenuItem)sender).ForeColor = Color.Red;
}
private void toolStripMenuItem1_MouseLeave(object sender, EventArgs e)
{
((ToolStripMenuItem)sender).ForeColor = Color.Black;
}
End Sub -
Hola Davsol,
El código que puso jtorrecilla está en c#, debes convertirlo a vb.net.
primero, en tu formulario debes tener un método parecido a este:
(RECUERDA SUSTITUIR FORM1 POR EL NOMBRE DE TU FORMULARIO)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub
dentro de este manejador debes poner el código que añadirá los manejadores de eventos a los eventos MouseEnter (el ratón entra en el item del menu) y MouseLeave (el ratón sale del item del menu), para ello crea un método recursivo como este:
Private Sub AddEventosCambioColor(ByVal m As ToolStripItemCollection) For Each elemento As ToolStripMenuItem In m If elemento.HasDropDownItems Then AddEventosCambioColor(elemento.DropDownItems) End If AddHandler elemento.MouseEnter, AddressOf EntraRaton_MouseEnter AddHandler elemento.MouseLeave, AddressOf SaleRatom_MouseLeave Next End Sub
y Dentro del método Form_Load que te indico al principio llama a este método asi:
(RECUERDA SUSTITUIR MIMENU POR EL NOMBRE DEL CONTROL MENU QUE TIENES EN TU FORMULARIO)
AddEventosCambioColor(mimenu.DropDownItems)
Por último tienes que añadir dos métodos que controlen el evento mouseenter y mouseleave:
Private Sub EntraRaton_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) CType(sender, ToolStripMenuItem).ForeColor = Color.Red End Sub Private Sub SaleRatom_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) CType(sender, ToolStripMenuItem).ForeColor = Color.Black End Sub
Con esto te tiene que funcionar correctamente.
Un saludo!- Propuesto como respuesta Josue YerayMVP, Moderator miércoles, 10 de marzo de 2010 18:53
-
-
Perdon crei que estabas trabajando en c# y por eso te puse el ejemplo en c#
Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
Si la respuesta te ha sido util Votala.
Mi Blog: Jtorrecilla
Enlace a Faq de Winforms en Ingles Muy bueno -
-
-