c#winforms toolstripmenuitem更改背景

好的,有人请告诉我为什么这不起作用。

我在winforms app(c#)中有一个简单的MenuStrip。 它有ToolStripMenuItems。

在设计器的属性窗口中,我选择BackColor = White。 在Desginer.cs文件中,我可以看到它。

运行应用程序时,背景颜色为Control(灰色)。

怎么回事? 为什么背景颜色不是白色?

谢谢

编辑

这是Designer.cs中的代码:

this.menuRefresh.BackColor = System.Drawing.Color.White; 

刷新项目应为白色

EDIT2:

在代码中,加载表单后(在构造函数中以及Form_Load事件中我放置了这个:

  menuRefresh.BackColor = Color.White; 

也没有帮助。

您需要实现一个简单的渲染器类来实现此目的。 这是一个例子:

 public partial class Form1 : Form { public Form1() { InitializeComponent(); menuStrip1.Renderer = new MyRenderer(); } private class MyRenderer : ToolStripProfessionalRenderer { protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e) { Rectangle rc = new Rectangle(Point.Empty, e.Item.Size); Color c = e.Item.Selected ? Color.Azure : Color.Beige; using (SolidBrush brush = new SolidBrush(c)) e.Graphics.FillRectangle(brush, rc); } } } 

MenuStripBackColor不确定任何工具条菜单(下拉列表)中包含的项目的背景颜色。 这些项目都有自己的BackColor属性,必须单独设置。

例如,您的“刷新”项是它自己的ToolStripMenuItem ,因此您还需要将其BackColor设置为White。


关于你的第二次编辑,设置menuRefresh.BackColor = Color.White; 应该在构造函数或Form_Load事件中正常工作。 我用两者进行了测试,它按预期工作。