6

我正在尝试在ContextMenuStrip中为ToolStripMenuItems设置更大的垂直填充。但是,更改Padding.Top属性会将填充添加到底部,而不是顶部。

我还尝试为ToolStripMenuItem设置更大的高度,它可以工作,但是,文本总是在顶部对齐,即使TextAlign属性是MiddleCenter。它应该与中心垂直对齐!

我为不同的属性尝试了不同的设置,没有任何效果。这个想法是我无法让ToolStripMenuItem在其文本周围有更多空间,无论是顶部还是底部。

我正在使用 C#、Windows 窗体、Net 2.0、Visual Studio 2010 Express、Windows 7。

4

3 回答 3

2

您可以使用Margin而不是Padding保持对齐Text的方式获得相同的效果。ToolStripMenuItem

缺点是当项目被选中时,这不会修改高亮矩形的大小,所以如果你增加很多高度,它看起来会有点奇怪。

于 2011-06-01T17:34:51.187 回答
2

除了 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);
        }
    }
于 2015-11-17T00:27:21.153 回答
1

添加新行就可以了。

这不是最好的解决方案,但它是添加一些填充的快速方法。

在添加对小型触摸屏的支持时效果很好。

this.configToolStripMenuItem.Text = "\r\nSettings";
于 2016-09-20T06:33:19.923 回答