c#winforms toolstripmenuitem更改背景

时间:2014-08-21 12:06:10

标签: c# winforms backcolor toolstripmenu

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

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

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

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

发生什么事了?为什么背景颜色不是白色?

由于

修改

这是Designer.cs中的代码:

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

Refresh item should be white

EDIT2:

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

 menuRefresh.BackColor = Color.White;

也没有帮助。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

BackColor的{​​{1}}无法确定任何工具条菜单(下拉菜单)中包含的项目的背景颜色。这些项目都有自己的MenuStrip属性,必须单独设置。

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


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