1

我创建了这个表单和一个自定义函数,该函数使用表单背景的深色部分来绘制控件的背景。

在此处输入图像描述

悬停时,控制区域突出显示,是否有此颜色的访问器?像 menustrip.Highlight 颜色?

在此处输入图像描述

我也找不到子菜单的访问器。我查看了 msdn 并找到了有关更改整个主题的能力的文章,仅颜色,没有关于如何设置背景图像的信息。我搜索了 SO 并找到了类似的主题,但没有一个可以回答我的问题或足够接近以推断出正确的答案。任何帮助将不胜感激。用 C# 编写。另外,子菜单是否存在时添加到控件列表中?

4

2 回答 2

2

您应该使用 ToolStripRenderer 自定义菜单外观。将渲染器分配给菜单并调用无效:

menuStrip.Renderer = new ToolStripProfessionalRenderer(new DarkColorTable());
menuStrip.Invalidate();

如您所见,渲染器需要颜色表。您应该创建自定义一个并覆盖您要自定义的所有颜色:

public class DarkColorTable : ProfessionalColorTable
{
    public override Color MenuStripGradientBegin
    {
        get { return Color.FromArgb(128, Color.Black); }
    }

    public override Color MenuStripGradientEnd
    {
        get { return Color.FromArgb(128, Color.Black); }
    }

    public override Color ButtonSelectedHighlight
    {
        get { return Color.FromArgb(64, Color.Black); }
    }

    // etc
}
于 2012-05-10T23:30:30.617 回答
1
 Private Sub BackImageToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BackImageToolStripMenuItem.Click
 Me.MenuStrip1.BackgroundImage=Form1.My.Resources.Resources.nature 'where nature is image name
    BackImageToolStripMenuItem.Checked = True
End Sub
于 2015-05-28T08:57:51.417 回答