我正在尝试在 ContextMenuStrip 中为 ToolStripMenuItems 设置更大的垂直填充。但是,更改 Padding.Top 属性会将填充添加到底部,而不是顶部。
我还尝试为 ToolStripMenuItem 设置更大的高度,但是,即使 TextAlign >,文本总是在顶部对齐em> property是 MiddleCenter 。它应垂直对齐中心!
我为不同的属性尝试了不同的设置,没有任何效果。我的想法是,我无法让 ToolStripMenuItem 在其文本周围留出更多空间,包括顶部和底部。
我正在使用C#,Windows Forms,Net 2.0,Visual Studio 2010 Express,Windows 7。
答案 0 :(得分:2)
使用Margin
代替Padding
可以获得相同的效果,这将使Text
的{{1}}保持一致。
缺点是,当选择项目时,这不会修改高亮矩形的大小,因此如果增加很多高度,它看起来会有点奇怪。
答案 1 :(得分: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);
}
}
答案 2 :(得分:1)
添加新行可以完成这项工作。
这不是最好的解决方案,但它是添加一些填充的快速方法。
在添加小触摸屏支持时效果很好。
this.configToolStripMenuItem.Text = "\r\nSettings";