Pregunta

En estos días con Visual C # (Visual C # 2008 específicamente) parece que el color predeterminado para menustrips y menús es azul, lo que para mí es realmente extraño y es algo que me gustaría anular. Supongo que Visual Studio está captando este color azul del tema de mi sistema seleccionado o algo así, sin embargo, ninguna otra aplicación de Windows que se ejecute en mi sistema tiene este color azul, así que no sé por qué mis aplicaciones .NET deberían tenerlo. . ;)

De todos modos, noté que si creo una aplicación utilizando una versión anterior de Visual Studio (Visual Studio.NET), el color de fondo predeterminado para menustrips y menús es el gris estándar que se espera ver. Supongo que esta es una solución al problema, pero parece una especie de estupidez y realmente me gustaría encontrar una manera de anularlo en la versión actual de Visual C #.

¿Fue útil?

Solución

DotNet 1.x no tenía un MenuStrip, y usaba un menú estándar de Windows.

Las versiones DotNet 2.0 y superiores tienen MenuStrip, y VS 7 y arriba eliminan MainMenu de la caja de herramientas y lo reemplazan con un MenuStrip, que usa el tema Office Xp 2003, de ahí la combinación de colores azul para el MenuStrip y ToolStrip.

El MainMenu aún se puede agregar a la caja de herramientas para un menú estándar de Windows.

Otros consejos

Configura el " RenderMode " opción de MenuStrip a " Sistema " en lugar de " managerRenderMode "

:)

¿Ha intentado configurar el color de fondo de su menú Eliminar? Deberías poder hacer algo como:

this.menuStrip1.BackColor = Color.FromKnownColor(KnownColor.Control);

Puedes hacer tu propio Renderizador

    public class BrowserMenuRenderer : ToolStripProfessionalRenderer
{
    public BrowserMenuRenderer() : base(new BrowserColors()) {}
}
public class BrowserColors : ProfessionalColorTable
{
    public override Color MenuItemSelected
    {
        get { return Color.FromArgb(30, 30, 30); }
    }
    public override Color MenuItemBorder
    {
        get { return Color.FromArgb(30, 30, 30); }
    }
    public override Color MenuItemSelectedGradientBegin
    {
        get { return Color.FromArgb(30, 30, 30); }
    }
    public override Color MenuItemSelectedGradientEnd
    {
        get { return Color.FromArgb(30, 30, 30); }
    }
}

Luego, simplemente configura el renderizador de su menustrip como YourRenderer

Puede usar el modo de renderización, pero eso solo establece el tema del sistema a predeterminado. .net le permite cambiar el color de fondo y el color, pero cuando se desplaza sobre él todavía muestra los colores predeterminados. Aquí hay una manera de evitar eso ...

es muy sencillo de lograr utilizando el comando " DropDownOpening " , " DropDownClosed " y " MouseEnter " eventos.

private void fileToolStripMenuItem_DropDownOpening(object sender, EventArgs e){

    // When the user clicks on "File" it will change to red.
    fileToolStripMenuItem.ForeColor = Color.Red;
}


private void testToolStripMenuItem_MouseEnter(object sender, EventArgs e){

    // When the user hovers over a child of "file" called "test", "file" turns orange.
    fileToolStripMenuItem.ForeColor = Color.Orange;
}


private void test2ToolStripMenuItem_MouseEnter(object sender, EventArgs e){

    // When the user hovers on a child of "file" called "test2", "file" turns blue.
    fileToolStripMenuItem.ForeColor = Color.Blue;
}


private void fileToolStripMenuItem_DropDownClosed(object sender, EventArgs e){

    // When the user leaves the "file" menu, it gets restored back to black.
    fileToolStripMenuItem.ForeColor = Color.Black;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top