6

ContextMenuStripのToolStripMenuItemsに、より大きな垂直方向のパディングを設定しようとしています。ただし、Padding.Topプロパティを変更すると、上部ではなく下部にパディングが追加されます。

ToolStripMenuItemのHeightを大きく設定しようとしましたが、動作しますが、 TextAlignプロパティがMiddleCenterであっても、テキストは常に上に配置されます。中央に垂直に配置する必要があります。

プロパティごとに異なる設定を試しましたが、何も機能しません。アイデアは、 ToolStripMenuItemのテキストの周りに上部と下部の両方のスペースを確保できないということです。

C#、Windows フォーム、Net 2.0、Visual Studio 2010 Express、Windows 7 を使用しています。

4

3 に答える 3

2

Marginの代わりにwhichPaddingを使用して同じ効果を得ることができます。TextToolStripMenuItem

欠点は、アイテムが選択されたときにハイライトの四角形のサイズを変更しないため、高さを大幅に増やすと少し奇妙に見える可能性があることです。

于 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 に答える