我正在自定义绘制一个菜单项MenuStrip
。我遇到的问题是菜单项坚持根据文本调整自身大小,这不是我想要的(没有文本)。我可以设置AutoSize
为 false 并明确指定大小,但包含的菜单 ( ToolStripDropDown
) 仍会根据文本自行调整大小,这会导致它太小而无法包含整个菜单项。
有没有一种简单的方法来设置菜单项的大小?
我正在自定义绘制一个菜单项MenuStrip
。我遇到的问题是菜单项坚持根据文本调整自身大小,这不是我想要的(没有文本)。我可以设置AutoSize
为 false 并明确指定大小,但包含的菜单 ( ToolStripDropDown
) 仍会根据文本自行调整大小,这会导致它太小而无法包含整个菜单项。
有没有一种简单的方法来设置菜单项的大小?
可以通过向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);
}
}
CodeProject 上的一篇文章中的这条评论解释了我的问题的性质:
虽然您可以处理 ToolStripMenuItem 的 Paint 事件,但 ToolStripMenuItem 并非旨在“由所有者绘制”。如果要处理特定工具条项的绘制,推荐的方法是创建自己的 ToolStripItem 派生类型。有关示例,请参见ToolStripItem 类[^]。
一般来说,ToolStrip 是 WinForms 命名空间中结构最恰当的控件。它具有几乎无限的可能性并且非常可扩展。
更新:根据您的评论。我不能说太多,因为虽然 ToolStrip 是最结构化的,但它的评论也非常好,并且需要发现许多特殊的东西。我仍然在我的答案中添加了#3,但是只有通过尝试才能发现很多事情,当然也可以通过使用 Reflector。