ToolStripMenuItem большая вертикальная заливка или вертикальное центрирование текста в большем ToolStripMenuItem - PullRequest
5 голосов
/ 01 июня 2011

Я пытаюсь установить больший вертикальный отступ для ToolStripMenuItems в ContextMenuStrip . Однако изменение свойства Padding.Top добавляет заполнение снизу, а не сверху.

Я также пытался установить Высота для ToolStripMenuItem , он работает, однако текст всегда выравнивается по верху, даже если свойство TextAlign является MiddleCenter . Он должен быть выровнен по центру по вертикали!

Я пробовал разные настройки для разных свойств, ничего не работает. Идея состоит в том, что я не могу заставить ToolStripMenuItem иметь больше места вокруг текста, как вверху, так и внизу.

Я использую C #, Windows Forms, Net 2.0, Visual Studio 2010 Express, Windows 7.

Ответы [ 3 ]

2 голосов
/ 17 ноября 2015

В дополнение к ответу InBetween вы можете исправить выделенный прямоугольник, используя пользовательский рендер и настраивая его свойство «TextRectangle».Вот пример кода:

    var itemHeight = 36;
    var verticalPadding = 36 - TextRenderer.MeasureText("A", _DisplayNameFont).Height) / 2;
    menu.Renderer = new MyRenderer { VerticalPadding = verticalPadding };

    class MyRenderer : ToolStripSystemRenderer
    {
        public int VerticalPadding { get; set; }

        protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
        {
            if (null == e)
            { return; }
            e.TextFormat &= ~TextFormatFlags.HidePrefix;
            e.TextFormat |= TextFormatFlags.VerticalCenter;
            var rect = e.TextRectangle;
            rect.Offset(0, VerticalPadding);
            e.TextRectangle = rect;
            base.OnRenderItemText(e);
        }
    }
2 голосов
/ 01 июня 2011

Вы можете получить тот же эффект, используя Margin вместо Padding, что позволит выровнять Text из ToolStripMenuItem.

Недостатком является то, что это не изменит размер подсветки.прямоугольник, когда элемент выбран, поэтому он может выглядеть немного странно, если вы сильно увеличите высоту.

1 голос
/ 20 сентября 2016

Добавление новой строки делает работу.

Это не лучшее решение, но это быстрый способ добавить некоторые отступы.

Хорошо работает при добавлении поддержки небольших сенсорных экранов.

this.configToolStripMenuItem.Text = "\r\nSettings";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...