【问题标题】:Change WinForms button highlight color更改 WinForms 按钮突出显示颜色
【发布时间】:2015-01-07 19:01:11
【问题描述】:

我找到了this page,它概述了如何更改 MenuStrip 及其项目的呈现。

我想用这个,但问题是当你将鼠标悬停在按钮上时突出显示的颜色与它不匹配。

有什么方法可以将高亮颜色从蓝色更改为黄色?我尝试过使用 MouseHover 和 MouseLeave 事件,但由于某种原因,它们真的很慢,并且它们将按钮更改为纯色,这看起来很糟糕,但在按钮边缘留下了一个不会改变的边框.

在设计器中:

this.ButtonName.MouseHover += new System.EventHandler(button_mousehover);

然后在代码中:

private void button_mousehover(object sender, EventArgs e)
{
    Button btn = sender as Button;
    btn.BackColor = Color.Yellow;
}

有没有像我在上面发布的链接中那样简单地将突出显示颜色从蓝色更改为其他颜色的方法?

这里是改变菜单条渲染的代码:

private void myForm Load(object sender, EventArgs e)
{
    myMenuStrip.Renderer = new MenuRenderer();
{

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

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

因此,它会将悬停菜单项的背景更改为橙黄色渐变,单击时将其更改为黄橙色渐变,并且菜单中的任何项目在悬停时都会有金色突出显示。

我要做的是为表单中的按钮执行最后一部分(将突出显示更改为金色/黄色)。

【问题讨论】:

  • 您能否发布您的代码以更改 MenuStrip 项的呈现?
  • 好的,等一下,我会把它编辑到评论中。
  • 等一下,什么颜色你看不到你希望看到?
  • 我可以看到你描述的高亮颜色。当我将鼠标悬停在 MenuItems 上时,我可以看到它们是金色的。
  • 你试过 FlatAppearance 属性吗?

标签: c# visual-studio button highlight mousehover


【解决方案1】:

在按钮的属性中:

FlatStyle 下,选择Flat

然后,展开FlatAppearance 并在MouseOverBackColor 下选择所需的突出显示颜色。或者,您也可以在MouseOverBackColor 下输入您想要的RGB color

【讨论】:

  • 快速简单。关于 SO 的那些被低估且容易被忽视的答案之一。
【解决方案2】:

你可以看看Button Renderer

当您可以像这样简单地订阅 MouseHover 事件时,为什么要覆盖渲染器:

this.someButtonName.MouseHover += (s,e) => 
{
   this.someButtonName.BackColor = Color.Yellow;
};

我建议您也使用鼠标离开,以便在鼠标不在按钮上时将按钮重置为其初始颜色。

【讨论】:

  • 是的,我确实这样做了,但它是 A) 出于某种原因慢(花了大约半秒来更改背景颜色)和 B) 填充按钮实心,除了边框,它没有看起来不太好。
  • 我同意它不会给出最好的结果。您是否尝试过更改其他属性,例如边框颜色
  • 好吧,有趣的是,我查看了属性,发现在 FlatAppearance 下有一组属性,其中一个是 MouseOverBackColor,它确实会立即改变背景(尽管仍然是纯色),但是仅当您将 FlatStyle 更改为 Flat 或 Popup 时才有效。
  • 实际上,经过一些调整,它看起来很不错。如果没有人知道如何更改高亮颜色,我可能最终会使用它。
  • 太棒了。我确信网上有大量示例,您可以找到其他人成功覆盖按钮突出显示的地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 2012-10-24
  • 2013-02-02
相关资源
最近更新 更多