I am programming a Backup Tool. On top of my tool I have a menustrip containing two toolstripmenuitems. I changed the colors a little bit to my expectations. Not focused the menu looks great:
When I now click on the menu item "File" to open the context menu, the color changes to white and I am not able to read the text anymore:
Can anyone please tell me where I can change that behavior? I use Visual Studio 2013 Ultimate, Windows Forms Application, Code is in C#.
Here is the code:
//
// 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);
By default this feature is not available out of the box. You need to create a custom Renderer
for you tool strip to achieve this.
Create a class that inherits from 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);
}
}
And attach this renderer to your menu strip in your form constructor -
public Form1()
{
InitializeComponent();
menuStrip1.Renderer = new BlueRenderer();
}