【问题标题】:How to change the color of a check mark or 'more' arrow on a WinForms context menu?如何更改 WinForms 上下文菜单上复选标记或“更多”箭头的颜色?
【发布时间】:2011-10-27 04:12:10
【问题描述】:

我有一个需要使用深色背景的上下文菜单。它使用支票边距并有几个子菜单。复选标记和指示子菜单的箭头都是黑色的,因此很难看到。我找不到改变颜色的方法。 (在我看来,他们应该使用 ForeColor,我们为文本设置为白色,但这似乎并不影响复选标记或箭头。)

有没有办法做到这一点?

编辑:我们使用图像边距中的图像作为解决方法。但我们还有其他问题,在尝试解决这些问题之前,我想我会尝试为基本问题找到一个更简单的解决方案。

【问题讨论】:

  • 基本方法显示在此答案stackoverflow.com/questions/2097164/… 您需要覆盖 OnRenderArrow 和 OnRenderItemCheck 方法。
  • @Hans - 谢谢。我会在几天后尝试——在从崩溃的工作站中恢复之后。 :(

标签: c# winforms contextmenu


【解决方案1】:

我过去在类似情况下所做的是通过切换上下文菜单图像来“模拟”复选框。

即我记得菜单项是否被选中/取消选中(即作为菜单项的Tag 内的布尔值),然后根据菜单项的状态将图片适当地更改为选中图像或无图像。

您甚至可以从MenuItem 派生您自己的类,并将其中的检查透明地更改给派生类的用户。

对于右侧的箭头,我假设您可以通过在显示快捷方式的区域内用另一种字体(例如 Wingdings?)绘制箭头来模拟它。

或者,作为一种完全不同的方法,使用the owner draw functionality of the MenuItem

【讨论】:

  • 感谢您的建议。我们正在使用图像边距方法。但是我们还有其他问题,在尝试解决它们之前,我想我会尝试为基本问题找到一个更简单的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 2022-08-19
  • 2017-06-20
  • 2015-01-24
  • 2021-12-06
  • 2021-08-18
  • 1970-01-01
相关资源
最近更新 更多