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