自定义ToolStripItem的背景颜色

时间:2014-12-18 19:16:31

标签: c# winforms user-interface custom-controls

我正在尝试制作类似于Visual Studio 2013的MenuStrip。 到目前为止,我已成功使用自定义渲染器更改为项目标题MenuStrip的颜色。

这里是代码:

public class CGMenuItemRenderer : ToolStripProfessionalRenderer
{
    protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e)
    {

        if (e.Item.Pressed)
        {
            Rectangle rc = new Rectangle(Point.Empty, e.Item.Size);
            e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(234, 240, 255)), rc);
            e.Graphics.DrawRectangle(new Pen(Color.FromArgb(155, 167, 183)), 0, 0, rc.Width - 1, rc.Height - 1);

            rc = new Rectangle(Point.Empty + e.Item.Size, e.Item.Size);
            e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(234, 240, 255)), rc);
            e.Graphics.DrawRectangle(new Pen(Color.FromArgb(155, 167, 183)), 0, 0, rc.Width - 1, rc.Height - 1);
        }
        else if (e.Item.Selected)
        {
            Rectangle rc = new Rectangle(Point.Empty, e.Item.Size);
            e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(255, 232, 166)), rc);
            e.Graphics.DrawRectangle(new Pen(Color.FromArgb(229, 195, 101)), 0, 0, rc.Width - 1, rc.Height - 1);
        }
        else
        {
            base.OnRenderMenuItemBackground(e);
        }



    }
}

public partial class CGMenu : MenuStrip
{
    public CGMenu()
    {
        Initialize();
    }

    private void Initialize()
    {
        InitializeComponent();
        BackColor = Color.FromArgb(214, 219, 233);
        Renderer = new CGMenuItemRenderer();
    }

    protected override void OnPaint(PaintEventArgs pe)
    {
        base.OnPaint(pe);
    }
}

当我在我的应用程序上使用CGMenu时,它的工作很好地在第一个:

Blue background as expected

这完全是我所期待的,具有像Visual Studio一样的蓝色背景,当我将它悬停时,颜色会像Visual Studio一样变成黄色。 但是,当我在其上添加子菜单时,背景颜色与标题1不同:

enter image description here

另请注意,第一个项目和标题之间有一个小的白色间隙,但我很确定它,因为背景是白色的。

那么你们有没有想法如何将背景颜色应用到子菜单? 谢谢!

修改 我在Visual Studio MenuStrip / MainMenu中发现了一些不同的东西。 我不知道如何使用MenuStrip实现这一目标:

enter image description here

0 个答案:

没有答案