更改ToolStripMenuItem的大小

sna*_*arf 4 menustrip ownerdrawn winforms

我是自定义绘制一个菜单项MenuStrip.我遇到的问题是菜单项坚持根据文本调整自身大小,这不是我想要的(没有文本).我可以设置AutoSize为false并明确指定大小,但是包含的menu(ToolStripDropDown)仍然根据文本调整自身大小,这会导致它太小而无法包含整个菜单项.

有没有直接的方法来设置菜单项的大小?

小智 6

它可以通过添加一个空图像来实现toolStripItem.现在改变图像的大小,以给你想要的大小ToolStripItem.我在我的项目中完成了以下操作:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

public partial class Form1 : Form
{    
    public Form1()
    {
        Bitmap emptyImage = new Bitmap(48, 48);
        ToolStripMenuItem  m_Item = new ToolStripMenuItem(System.Convert.ToString("All       Programs",emptyImage);
        m_Item.ImageAlign = ContentAlignment.MiddleLeft;
        m_Item.ImageScaling = ToolStripItemImageScaling.None;                        
        m_Item.Name = btnId.ToString();
        MenuStrip menu = new MenuStrip();
        menu.Items.Add(m_Item);
    }
}
Run Code Online (Sandbox Code Playgroud)


sna*_*arf 1

CodeProject 上的一篇文章中的评论解释了我的问题的性质:

虽然您可以处理 ToolStripMenuItem 的 Paint 事件,但 ToolStripMenuItem 并不旨在由“所有者绘制”。如果要处理特定工具条项的绘制,建议的方法是创建您自己的 ToolStripItem 派生类型。有关示例,请参阅ToolStripItem 类[^]。