Comment modifier la couleur d'arrière-plan par défaut pour les menus et les menus dans .NET?

StackOverflow https://stackoverflow.com/questions/617224

  •  03-07-2019
  •  | 
  •  

Question

Ces jours-ci avec Visual C # (Visual C # 2008 en particulier), il semble que la couleur par défaut pour les menus et les menus est le bleu, ce qui me semble vraiment étrange et que je voudrais vraiment remplacer. J'imagine que Visual Studio prend cette couleur bleue dans le thème de mon système sélectionné ou quelque chose du genre. Cependant, aucune autre application Windows en cours d'exécution sur mon système n'a cette couleur bleue, je ne sais donc pas pourquoi mes applications .NET devraient l'avoir. . ;)

Quoi qu’il en soit, j’ai remarqué que si je créais une application avec une version antérieure de Visual Studio (Visual Studio.NET), la couleur d’arrière-plan par défaut des menus et menus était le gris standard attendu. C’est une solution au problème, je suppose, mais cela semble plutôt stupide et j’aimerais vraiment trouver un moyen de le remplacer dans la version actuelle de Visual C #.

Était-ce utile?

La solution

DotNet 1.x n’avait pas de MenuStrip et utilisait un menu Windows standard.

DotNet versions 2.0 et supérieures ont le MenuStrip et VS 7 et supérieurs suppriment le MainMenu de la boîte à outils et le remplace par un MenuStrip, qui utilise le thème Office Xp 2003, d'où le jeu de couleurs bleu pour le MenuStrip et ToolStrip.

Le menu principal peut toujours être ajouté à la boîte à outils pour un menu Windows standard.

Autres conseils

Définissez le " RenderMode ". option du menuStrip vers " Système ". au lieu de "managerRenderMode"

:

Avez-vous essayé de définir la couleur de fond de votre menuStrip? Vous devriez pouvoir faire quelque chose comme:

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

Vous pouvez créer votre propre moteur de rendu

    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); }
    }
}

Ensuite, vous venez de définir le moteur de rendu de votre menustrip comme YourRenderer

Vous pouvez utiliser le mode de rendu mais cela ne définit que le thème système par défaut. .net vous permet de changer la couleur de fond et la couleur de, mais lorsque vous la survolez, elle affiche toujours les couleurs par défaut. Voici un moyen de contourner ça ...

his est très simple à réaliser à l'aide de l'option "DropDownOpening". , "DropDownClosed" et "MouseEnter". événements.

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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top