时间:2019-05-11 标签:c#toolstripmenuitem更改背景winforms

Ehu*_*and 3 c# backcolor winforms toolstripmenu

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

我在 winforms 应用程序(c#)中有一个简单的 MenuStrip。它有 ToolStripMenuItems。

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

运行应用,背景色为Control(灰色)。

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

谢谢

编辑

这是来自 Designer.cs 的代码:

   this.menuRefresh.BackColor = System.Drawing.Color.White;
Run Code Online (Sandbox Code Playgroud)

刷新项应该是白色的

编辑2:

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

 menuRefresh.BackColor = Color.White;
Run Code Online (Sandbox Code Playgroud)

也帮不上忙。

dot*_*NET 5

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

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); 
        } 
    } 
} 
Run Code Online (Sandbox Code Playgroud)