Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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# 如何更改菜单悬停颜色_C#_Winforms_Winapi - Fatal编程技术网

C# 如何更改菜单悬停颜色

C# 如何更改菜单悬停颜色,c#,winforms,winapi,C#,Winforms,Winapi,如何更改Windows应用程序菜单的悬停(鼠标悬停)颜色 C#中的任何方法? 或 使用Windows API(DllImport)有任何方法吗? 如图所示: 您正在使用MenuStrip类。可以覆盖其渲染器。这里有一个例子,请选择你自己的颜色 public partial class Form1 : Form { public Form1() { InitializeComponent(); menuStrip1.Renderer = new MyRend

如何更改Windows应用程序菜单的悬停(鼠标悬停)颜色

C#中的任何方法?

使用Windows API(DllImport)有任何方法吗?

如图所示:


您正在使用MenuStrip类。可以覆盖其渲染器。这里有一个例子,请选择你自己的颜色

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        menuStrip1.Renderer = new MyRenderer();
    }

    private class MyRenderer : ToolStripProfessionalRenderer {
        public MyRenderer() : base(new MyColors()) {}
    }

    private class MyColors : ProfessionalColorTable {
        public override Color MenuItemSelected {
            get { return Color.Yellow; }
        }
        public override Color MenuItemSelectedGradientBegin {
            get { return Color.Orange; }
        }
        public override Color MenuItemSelectedGradientEnd {
            get { return Color.Yellow; }
        }
    }
}

控件其他颜色元素的其他属性。

要更改鼠标在边框上的颜色(在项目上),请使用以下命令:

public override Color MenuItemBorder  
{
    get { return Color.Green; }
}

您还可以使其透明(不可见):


我也有类似的问题,我浏览了很多文章,很多论坛,但没有找到我问题的完美答案。我不仅遇到了下拉菜单元素悬停的问题,还有背景和总体布局的问题,以及如何以编程方式添加子元素的问题。然后我发现了如何在Stackoverflow论坛中轻松定制MenuStrip,但是我仍然遇到了下拉列表的问题。然后我自己发现ContextMenuStip具有实现目标的特性。将任何MenuStrip添加到ContextMenuStrip作为下拉菜单是很容易的。哦,是的:它的优点是你不需要使用任何特殊的组件

因此,步骤如下:

    public class submenuColorTable : ProfessionalColorTable
    {
        public override Color MenuItemSelected
        {
            get { return ColorTranslator.FromHtml("#302E2D"); }
        }

        public override Color MenuItemBorder
        {
            get { return Color.Silver; }
        }

        public override Color ToolStripDropDownBackground
        {
            get { return ColorTranslator.FromHtml("#21201F"); }
        }

        public override Color ToolStripContentPanelGradientBegin
        {
            get { return ColorTranslator.FromHtml("#21201F"); }
        }
    }

    public class LeftMenuColorTable : ProfessionalColorTable
    {
        public override Color MenuItemBorder
        {
            get { return ColorTranslator.FromHtml("#BAB9B9"); }
        }

        public override Color MenuBorder  //added for changing the menu border
        {
            get { return Color.Silver; }
        }

        public override Color MenuItemPressedGradientBegin
        {
            get { return ColorTranslator.FromHtml("#4C4A48"); }
        }
        public override Color MenuItemPressedGradientEnd
        {
            get { return ColorTranslator.FromHtml("#5F5D5B"); }
        }            

        public override Color ToolStripBorder
        {
            get { return ColorTranslator.FromHtml("#4C4A48"); }
        }

        public override Color MenuItemSelectedGradientBegin
        {
            get { return ColorTranslator.FromHtml("#4C4A48"); }
        }

        public override Color MenuItemSelectedGradientEnd
        {
            get { return ColorTranslator.FromHtml("#5F5D5B"); }
        }

        public override Color ToolStripDropDownBackground
        {
            get { return ColorTranslator.FromHtml("#404040"); }
        }

        public override Color ToolStripGradientBegin
        {
            get { return ColorTranslator.FromHtml("#404040"); }
        }

        public override Color ToolStripGradientEnd
        {
            get { return ColorTranslator.FromHtml("#404040"); }
        }

        public override Color ToolStripGradientMiddle
        {
            get { return ColorTranslator.FromHtml("#404040"); }
        }
    }
menuStrip.Renderer = new ToolStripProfessionalRenderer(new LeftMenuColorTable());
  • 你需要一张彩色桌子
  • 您必须在菜单上使用它
  • MenuStrip上的ToolStripMenuItems必须具有ContextMenuStrip作为下拉列表
  • 通过ToolStripMenuItems.Items[?].DropDownItems函数,您可以轻松地操作显示为下拉元素的子元素
  • 1.-颜色表:

        public class submenuColorTable : ProfessionalColorTable
        {
            public override Color MenuItemSelected
            {
                get { return ColorTranslator.FromHtml("#302E2D"); }
            }
    
            public override Color MenuItemBorder
            {
                get { return Color.Silver; }
            }
    
            public override Color ToolStripDropDownBackground
            {
                get { return ColorTranslator.FromHtml("#21201F"); }
            }
    
            public override Color ToolStripContentPanelGradientBegin
            {
                get { return ColorTranslator.FromHtml("#21201F"); }
            }
        }
    
        public class LeftMenuColorTable : ProfessionalColorTable
        {
            public override Color MenuItemBorder
            {
                get { return ColorTranslator.FromHtml("#BAB9B9"); }
            }
    
            public override Color MenuBorder  //added for changing the menu border
            {
                get { return Color.Silver; }
            }
    
            public override Color MenuItemPressedGradientBegin
            {
                get { return ColorTranslator.FromHtml("#4C4A48"); }
            }
            public override Color MenuItemPressedGradientEnd
            {
                get { return ColorTranslator.FromHtml("#5F5D5B"); }
            }            
    
            public override Color ToolStripBorder
            {
                get { return ColorTranslator.FromHtml("#4C4A48"); }
            }
    
            public override Color MenuItemSelectedGradientBegin
            {
                get { return ColorTranslator.FromHtml("#4C4A48"); }
            }
    
            public override Color MenuItemSelectedGradientEnd
            {
                get { return ColorTranslator.FromHtml("#5F5D5B"); }
            }
    
            public override Color ToolStripDropDownBackground
            {
                get { return ColorTranslator.FromHtml("#404040"); }
            }
    
            public override Color ToolStripGradientBegin
            {
                get { return ColorTranslator.FromHtml("#404040"); }
            }
    
            public override Color ToolStripGradientEnd
            {
                get { return ColorTranslator.FromHtml("#404040"); }
            }
    
            public override Color ToolStripGradientMiddle
            {
                get { return ColorTranslator.FromHtml("#404040"); }
            }
        }
    
    menuStrip.Renderer = new ToolStripProfessionalRenderer(new LeftMenuColorTable());
    
    2.-在菜单上使用它:

        public class submenuColorTable : ProfessionalColorTable
        {
            public override Color MenuItemSelected
            {
                get { return ColorTranslator.FromHtml("#302E2D"); }
            }
    
            public override Color MenuItemBorder
            {
                get { return Color.Silver; }
            }
    
            public override Color ToolStripDropDownBackground
            {
                get { return ColorTranslator.FromHtml("#21201F"); }
            }
    
            public override Color ToolStripContentPanelGradientBegin
            {
                get { return ColorTranslator.FromHtml("#21201F"); }
            }
        }
    
        public class LeftMenuColorTable : ProfessionalColorTable
        {
            public override Color MenuItemBorder
            {
                get { return ColorTranslator.FromHtml("#BAB9B9"); }
            }
    
            public override Color MenuBorder  //added for changing the menu border
            {
                get { return Color.Silver; }
            }
    
            public override Color MenuItemPressedGradientBegin
            {
                get { return ColorTranslator.FromHtml("#4C4A48"); }
            }
            public override Color MenuItemPressedGradientEnd
            {
                get { return ColorTranslator.FromHtml("#5F5D5B"); }
            }            
    
            public override Color ToolStripBorder
            {
                get { return ColorTranslator.FromHtml("#4C4A48"); }
            }
    
            public override Color MenuItemSelectedGradientBegin
            {
                get { return ColorTranslator.FromHtml("#4C4A48"); }
            }
    
            public override Color MenuItemSelectedGradientEnd
            {
                get { return ColorTranslator.FromHtml("#5F5D5B"); }
            }
    
            public override Color ToolStripDropDownBackground
            {
                get { return ColorTranslator.FromHtml("#404040"); }
            }
    
            public override Color ToolStripGradientBegin
            {
                get { return ColorTranslator.FromHtml("#404040"); }
            }
    
            public override Color ToolStripGradientEnd
            {
                get { return ColorTranslator.FromHtml("#404040"); }
            }
    
            public override Color ToolStripGradientMiddle
            {
                get { return ColorTranslator.FromHtml("#404040"); }
            }
        }
    
    menuStrip.Renderer = new ToolStripProfessionalRenderer(new LeftMenuColorTable());
    
    3.-以编程方式向菜单元素添加ContextMenuStrip

            ContextMenuStrip CMS = new ContextMenuStrip()
            {
                Renderer = new ToolStripProfessionalRenderer(new submenuColorTable()),
                ShowImageMargin = false
            };
    
            ToolStripMenuItem TSMI = new ToolStripMenuItem("Button name")
            {
                BackColor = sampleMenuItem.BackColor,
                ForeColor = sampleMenuItem.ForeColor,
                Font = sampleMenuItem.Font,
                Margin = sampleMenuItem.Margin,
                Padding = sampleMenuItem.Padding,
                Size = sampleMenuItem.Size,
                TextAlign = sampleMenuItem.TextAlign,
                DropDown = CMS 
            };
    
            menuStrip.Items.Add(TSMI);
    
    4.-操纵子元素

    在这里,您可以操作(例如:添加)下拉菜单的元素。颜色、大小和其他属性仅以这种方式用于测试。可以使用常量或不同的值。(“i”是要添加子项的菜单按钮索引)

    在我的案例中,结果如下:


    这可能对其他人有用。谢谢你的阅读!快乐编码!:)

    这一部分至关重要。谢谢