3

I've got a menu with a custom Renderer:

menuMain.Renderer = new ToolStripProfessionalRenderer(new MenuColors());

Is there a way to change the font or perhaps make the menu item italic when moving the mouse over it?

I've got the event to change the background, but don't know about font / font color?

internal class MenuColors : ProfessionalColorTable
{
    public override Color MenuItemSelected
    {
        get { return MenuHoverColor; }
    }
}
4

2 に答える 2

3

ToolStripProfessionalRendererから継承し、OnRenderItemTextをオーバーライドして、以下のようにToolStripItemTextRenderEventArgsを使用できます。

public class SampleRenderer : ToolStripProfessionalRenderer
{
    protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
    {
        // Here set e.TextFont, e.TextColor and so on, For example:
        if (e.Item.Selected)
        {
            e.TextColor = Color.Blue;
            e.TextFont = new Font(e.Item.Font, FontStyle.Italic | FontStyle.Bold);
        }
        base.OnRenderItemText(e);
    }
}

e.Item プロパティを使用して、さまざまな状況で何をすべきかを決定できます。たとえば、そのロジックがサブ メニューでのみ機能するようにする場合は、次のようなコードを使用できます。

if (e.Item.Selected && e.Item.OwnerItem != null)
于 2015-08-31T14:43:02.447 に答える