ToolStripMenuItem 更大的垂直填充,或在更大的 ToolStripMenuItem 中垂直居中文本

Posted

技术标签:

【中文标题】ToolStripMenuItem 更大的垂直填充,或在更大的 ToolStripMenuItem 中垂直居中文本【英文标题】:ToolStripMenuItem bigger vertical padding, or vertically centering text in a bigger ToolStripMenuItem 【发布时间】:2011-09-06 11:47:02 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

您可以使用Margin 而不是Padding 获得相同的效果,这将使ToolStripMenuItemText 保持对齐。

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

【讨论】:

添加几行代码就可以调整ToolStripMenuItem的渲染器的“TextRectangle”。有关详细信息,请参阅下面的答案。【参考方案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);
        
    

【讨论】:

【参考方案3】:

添加一个新行就可以了。

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

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

this.configToolStripMenuItem.Text = "\r\nSettings";

【讨论】:

以上是关于ToolStripMenuItem 更大的垂直填充,或在更大的 ToolStripMenuItem 中垂直居中文本的主要内容,如果未能解决你的问题,请参考以下文章

为啥缩放以填充比 UIImageVIew 尺寸更大的图像? (使用快速)

垂直居中 <span> 文本,位于更大的 <span> 旁边,都在 <div> 内

如何在 AppBar 中包装子小部件以获得更大的子高度和 Flutter 中的填充

组合框没有正确调整大小以适应更大的字体大小

React Bootstrap:行列的垂直对齐?

我如何垂直和水平居中所有这些元素?