我有一个带有自定义渲染器的菜单:
menuMain.Renderer = new ToolStripProfessionalRenderer(new MenuColors());
当鼠标移到菜单项上时,有没有办法改变字体或者使菜单项变成斜体?
我有改变背景的事件,但不知道字体/字体颜色?
internal class MenuColors : ProfessionalColorTable
{
public override Color MenuItemSelected
{
get { return MenuHoverColor; }
}
}
2条答案
按热度按时间34gzjxbg1#
您可以继承ToolStripProfessionalRenderer并覆写OnRenderItemText,然后使用ToolStripItemTextRenderEventArgs,如下所示:
您可以使用e.Item属性来决定在不同情况下要执行的操作,例如,如果您希望该逻辑仅在子菜单上工作,则可以使用如下代码:
txu3uszq2#
您可以使用ToolStrip的属性手动变更ForeColor和Font属性,而Renderer会在转译时使用它们。
如果您希望在鼠标进入或选择某个项目时使用不同的字体和颜色,则应处理适当的事件以更改该情况下的字体和颜色,例如,下面的代码在鼠标悬停在项目上时将项目的字体更改为斜体:
您可以动态地将这些行程常式指派给ToolStripMenuItems,如下所示:
下面是一个自定义渲染器的屏幕快照,我在更改ToolStripButtons和ToolStripMenuItems的字体和颜色后,将其字体样式更改为粗体和斜体,前景色更改为绿色,并将该渲染器用于Office 2003样式的工具条。