Как изменить цвет фона по умолчанию для меню и меню в .NET? - PullRequest
3 голосов
/ 06 марта 2009

В наши дни в Visual C # (в частности, в Visual C # 2008) кажется, что цвет по умолчанию для меню и меню - синий, что для меня выглядит очень странно и что-то, что я действительно хотел бы переопределить. Я предполагаю, что Visual Studio выбирает этот синий цвет из выбранной мной системной темы или чего-то подобного, однако ни одно другое приложение Windows, работающее в моей системе, не имеет такого синего цвета, поэтому я не знаю, почему мои приложения .NET должны иметь его , ;)

В любом случае, я заметил, что если я создаю приложение, используя более старую версию Visual Studio (Visual Studio.NET), цвет фона по умолчанию для меню и меню - это стандартный серый цвет, который вы ожидаете увидеть. Я полагаю, что это одно из решений проблемы, но оно кажется глупым, и мне бы очень хотелось найти способ переопределить его в текущей версии Visual C #.

Ответы [ 5 ]

9 голосов
/ 09 апреля 2009

Установите для параметра * RenderMode"MenuStrip значение" Система"вместо" managerRenderMode "

:)

3 голосов
/ 06 марта 2009

Вы пытались установить задний цвет вашего менюStrip? Вы должны быть в состоянии сделать что-то вроде:

this.menuStrip1.BackColor = Color.FromKnownColor(KnownColor.Control);
0 голосов
/ 22 июля 2015

Вы можете сделать собственный рендерер

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

Тогда вы просто устанавливаете визуализатор вашей Menustrip как YourRenderer

0 голосов
/ 21 июля 2009

Вы можете использовать режим рендеринга, но это только устанавливает системную тему по умолчанию. .net позволяет вам изменять фоновый цвет и цвет для, но когда вы наводите курсор на него, он по-прежнему показывает цвета по умолчанию. Вот способ обойти это ...

Это очень просто сделать, используя события "DropDownOpening", "DropDownClosed" и "MouseEnter".

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;
}
0 голосов
/ 06 марта 2009

DotNet 1.x не имел MenuStrip и использовал стандартное меню Windows.

DotNet версии 2.0 и выше имеют MenuStrip, а VS 7 и выше удаляет MainMenu из панели инструментов и заменяет его на MenuStrip, в котором используется тема Office Xp 2003, поэтому синяя цветовая схема MenuStrip и ToolStrip.

MainMenu все еще можно добавить на панель инструментов для стандартного меню Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...