2016-04-21 3 views
0

Я программирую инструмент резервного копирования. В верхней части моего инструмента у меня есть menustrip, содержащий два инструментальных списка. Я немного изменил цвета к моим ожиданиям. Не сосредоточены меню выглядит великолепно:Изменение цвета для MenuItem

Unclicked Menu Item

Когда я теперь нажать на пункт меню «Файл», чтобы открыть контекстное меню, цвет меняется на белый и я не могу больше читать текст:

Clicked Menu Item

может кто-нибудь пожалуйста, скажите мне, где я могу изменить это поведение? Я использую Visual Studio 2013 Ultimate, приложение Windows Forms, код находится на C#.

Вот код:

// // initializing menuStrip1 // this.menuStrip1.BackColor = System.Drawing.Color.MediumBlue; this.menuStrip1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; this.menuStrip1.Font = new System.Drawing.Font("Segoe UI Semilight", 15.75F, System.Drawing.FontStyle.Regular,
System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fileToolStripMenuItem, this.helpToolStripMenuItem}); this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.MinimumSize = new System.Drawing.Size(0, 40); this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Size = new System.Drawing.Size(1056, 40); this.menuStrip1.TabIndex = 77; this.menuStrip1.Text = "menuStrip1"; // // initializing fileToolStripMenuItem and adding to menuStrip1 // this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.saveToolStripMenuItem, this.saveAsToolStripMenuItem, this.loadToolStripMenuItem}); this.fileToolStripMenuItem.Font = new System.Drawing.Font("Calibri Light", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.fileToolStripMenuItem.ForeColor = System.Drawing.SystemColors.ControlLightLight; this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; this.fileToolStripMenuItem.Size = new System.Drawing.Size(54, 36); this.fileToolStripMenuItem.Text = "File"; this.fileToolStripMenuItem.Click += new System.EventHandler (this.fileToolStripMenuItem_Click); // // initializing saveToolStripMenuItem and adding to fileToolStripMenuItem // this.saveToolStripMenuItem.BackColor = System.Drawing.Color.MediumBlue; this.saveToolStripMenuItem.ForeColor = System.Drawing.SystemColors.ControlLightLight; this.saveToolStripMenuItem.Name = "saveToolStripMenuItem"; this.saveToolStripMenuItem.Size = new System.Drawing.Size(166, 30); this.saveToolStripMenuItem.Text = "Save"; this.saveToolStripMenuItem.Click += new System.EventHandler (this.saveToolStripMenuItem_Click);
//

+1

Вы можете разместить свой цветовой код настройки? –

+0

Добавлен код инициализации :) –

ответ

0

По умолчанию эта функция не доступна из коробки. Для этого вам нужно создать пользовательскую таблицу Renderer.

Создать класс, который наследуется от ToolStripProfessionalRenderer -

private class BlueRenderer : ToolStripProfessionalRenderer 
    { 
     protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e) 
     { 
      Rectangle rc = new Rectangle(Point.Empty, e.Item.Size); 
      Color c = Color.MediumBlue; 
      using (SolidBrush brush = new SolidBrush(c)) 
       e.Graphics.FillRectangle(brush, rc); 
     } 
    } 

И прикрепить эту рендерер к вашей полосе меню в вашем виде конструктора -

public Form1() 
    { 
     InitializeComponent(); 
     menuStrip1.Renderer = new BlueRenderer(); 
    } 
+0

Ха-ха, отлично работает, большое спасибо! Забавно, что вы можете поменять все цвета по умолчанию, но не на тот конкретный ... Microsoft logic ?! –

+0

Еще один вопрос. Теперь Цвет - MediumBlue для всех состояний. Могу ли я иметь LightBlue, когда я щелкнул элемент в menuStrip1? –

+1

@ schmelzer-daniel - Просто определите своего клерика следующим образом: 'Цвет c = e.Item.Selected? Color.LightBlue: Color.MediumBlue; ' – Yogi

1

Вы можете создать свой собственный ProfessionalColorTable и переопределить его свойство:

Это результат трески е выше:

Custom menu

Смежные вопросы