当光标离开激活项时,工具条菜单项会自行更改颜色
Posted
技术标签:
【中文标题】当光标离开激活项时,工具条菜单项会自行更改颜色【英文标题】:Tool strip menu item changes its color by itself when cursor leaves activated item 【发布时间】:2016-06-06 08:39:29 【问题描述】:我创建了一个 Windows 窗体工具并添加了一个包含多个项目的菜单条和一个下拉菜单。一切正常,当我选择下拉菜单项“文件”时,它会正确展开。但是当光标离开工具条菜单项“文件”到下拉菜单项时,它会自动将其颜色更改为白色,这样您就无法再阅读白色文本了:
Unclicked menu strip
Clicked menu strip with mouse cursor on dropdown items
我之前也有类似的菜单条颜色变化问题,所以我已经定义了一个渲染器:
class BlueRenderer : ToolStripProfessionalRenderer
protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e)
if (!e.Item.Selected)
base.OnRenderMenuItemBackground(e);
e.Item.BackColor = Color.MediumBlue;
else
Rectangle rc = new Rectangle(Point.Empty, e.Item.Size);
e.Graphics.FillRectangle(Brushes.Blue, rc);
e.Graphics.DrawRectangle(Pens.MediumBlue, 1, 0, rc.Width - 2, rc.Height - 1);
e.Item.BackColor = Color.MediumBlue;
base.OnRenderItemBackground(e);
e.Item.BackColor = Color.MediumBlue;
protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
base.OnRenderItemText(e);
if (!e.Item.Selected)
e.Item.ForeColor = SystemColors.ControlLightLight;
else
e.Item.ForeColor = SystemColors.ControlLightLight;
我认为我必须更改渲染器中的另一个属性或行为,但我什至不知道哪个以及如何更改它。当鼠标光标离开此元素时,请帮助我将 itemcolor 保持为蓝色/中蓝色。
干杯
弗洛里安
【问题讨论】:
【参考方案1】:通过尝试多个渲染器选项找到了解决方案: 我删除了我以前的“BlueRenderer”并指定了一个 ProfessionalColorTable:
public class ownColorTable : System.Windows.Forms.ProfessionalColorTable
public override Color MenuItemPressedGradientBegin
get
return Color.Blue;
public override Color MenuItemPressedGradientEnd
get
return Color.Blue;
然后我将 ToolStripProfessionalRenderer 初始化如下:
menuStrip1.Renderer = new ToolStripProfessionalRenderer(new ownColorTable());
【讨论】:
以上是关于当光标离开激活项时,工具条菜单项会自行更改颜色的主要内容,如果未能解决你的问题,请参考以下文章