Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将背景图像应用于Menustrip子菜单项_C#_Winforms_Background_Controls_Menustrip - Fatal编程技术网

C# 将背景图像应用于Menustrip子菜单项

C# 将背景图像应用于Menustrip子菜单项,c#,winforms,background,controls,menustrip,C#,Winforms,Background,Controls,Menustrip,我已经创建了这个表单和一个自定义函数,它用一块变暗的表单背景来绘制控件的背景 悬停时,控制区域高亮显示,是否有此颜色的访问者?像menustrip。突出显示颜色 我也找不到子菜单的访问器。我看了msdn,找到了一些关于改变整个主题的文章,只是颜色,没有关于如何设置背景图像的信息。我搜索了这么多,找到了类似的主题,但没有一个能够回答我的问题,也没有一个能够推断出正确答案。我们将非常感谢您的任何帮助。用C写的。此外,子菜单存在时是否添加到控件列表中?您应该使用ToolStripRenderer自

我已经创建了这个表单和一个自定义函数,它用一块变暗的表单背景来绘制控件的背景

悬停时,控制区域高亮显示,是否有此颜色的访问者?像menustrip。突出显示颜色


我也找不到子菜单的访问器。我看了msdn,找到了一些关于改变整个主题的文章,只是颜色,没有关于如何设置背景图像的信息。我搜索了这么多,找到了类似的主题,但没有一个能够回答我的问题,也没有一个能够推断出正确答案。我们将非常感谢您的任何帮助。用C写的。此外,子菜单存在时是否添加到控件列表中?

您应该使用ToolStripRenderer自定义菜单外观。将渲染器指定给菜单并调用invalidate:

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
}

可能重复的我不试图改变任何颜色。我正在尝试将背景图像应用于颜色名称为color.Transparent。
 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