【问题标题】:C# how to change menuStrip hover color? [duplicate]C# 如何更改 menuStrip 悬停颜色? [复制]
【发布时间】:2016-06-12 18:27:20
【问题描述】:

大家好,当我将鼠标悬停在 menuStrip 上时,我想更改菜单项的颜色。谁能帮帮我?

【问题讨论】:

  • 不,不是。我想更改主要项目的悬停颜色,该问题中没有任何内容
  • 不,文字背景
  • 这不是问题吗?我认为这也改变了悬停时项目的背景颜色?
  • 写完我的答案后,我看到了副本。它非常相似,尽管我的回答使用了更愚蠢的名称:D。你当然可以改变颜色。
  • 您是否分析了我的问题以及您所链接的内容?这两个问题真的不重复

标签: c# colors menustrip


【解决方案1】:

您不能使用普通的 MouseEnterMouseLeave 事件来执行此操作。您需要直接覆盖菜单呈现。您可以使用MenuStrip 类来做这样的事情:

private class renderer : ToolStripProfessionalRenderer {
    public renderer() : base(new cols()) {}
}

private class cols : ProfessionalColorTable {
    public override Color MenuItemSelected {
        // when the menu is selected
        get { return Color.Blue; }
    }
    public override Color MenuItemSelectedGradientBegin {
        get { return Color.Black; }
    }
    public override Color MenuItemSelectedGradientEnd {
        get { return Color.White; }
    }
}

如果您有兴趣,当您使用 MouseEnterMouseLeave 事件时会发生这种情况。 (在MouseEnter 事件中,它使BackgroundColor 变为绿色,但未被调用):

【讨论】:

  • 正是我一直在寻找的,谢谢先生。
  • 很高兴我能帮上忙。请注意,您可以使用 ProfessionalColorTable 类做更多事情。请参阅此 MSDN 文章:msdn.microsoft.com/en-us/library/…
  • 您所说的EnterLeave 方法在哪里?为什么背景应该是绿色的?
  • 大多数控件上的MouseEnterMouseLeave 事件处理程序。我只是在解释这些无法改变BackgroundColor,因为菜单很尴尬。我会向您展示我玩过的示例代码,但我现在已将其删除。
  • 您可以在事件部分找到进入和离开事件,但这并不像 odixon 所说的那样工作
猜你喜欢
  • 2019-09-07
  • 1970-01-01
  • 2018-05-25
  • 2012-08-22
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多