Выравнивание текста по центру по вертикали элемента contextmenustrip с установленной вручную высотой - PullRequest
2 голосов
/ 15 июня 2011

Я пытаюсь выровнять текст по центру по вертикали в элементе acontextmenustrip с установленной вручную высотой 60. Однако, независимо от того, что я пробую, текст всегда вверху. Изображения в одном и том же элементе будут правильно выровнены, чтобы я ничего не делал.

Я пробовал следующее:

 foreach (ToolStripItem item in ContextMenuStrip1.Items)
        {
            item.AutoSize = false;
            item.Height = 60;
            item.Width = maxWidth;
            item.TextAlign = ContentAlignment.MiddleCenter;
        }

и создание нового класса customeRender:

public sealed class CustomRenderer : ToolStripProfessionalRenderer
{
    protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
    {
        if (e.Item.IsOnDropDown)
        {
            e.TextFormat |= TextFormatFlags.VerticalCenter;
        }
        base.OnRenderItemText(e);
    }
}

Однако это не работает для меня. Текст остается вертикально вверху элемента. Изображение, добавленное к одному из этих элементов, центрируется, как показано на стрелке.

Любая помощь будет великолепна. Айдан

1 Ответ

1 голос
/ 17 июня 2011

Используйте ToolStripButton вместо ToolStripItem - кажется, что выравнивание текста отлично работает на этом элементе управления

var b = new ToolStripButton("Hello");
b.TextAlign = ContentAlignment.MiddleCenter;
contextMenuStrip1.Items.Add(b);
...