请参阅下面的两张图片。我不希望菜单中的每个项目都是最大的高度。它的大小应该适合内容。我玩过许多属性,但无法阻止这种行为。可能吗?
(来源:blakerbertson.com)
(来源:blakerbertson.com)
请参阅下面的两张图片。我不希望菜单中的每个项目都是最大的高度。它的大小应该适合内容。我玩过许多属性,但无法阻止这种行为。可能吗?
(来源:blakerbertson.com)
(来源:blakerbertson.com)
将MenuItem.OwnerDraw设置为 true,然后处理MenuItem.MeasureItem事件。这使您可以独立于其他菜单项的大小告诉 Windows 窗体此菜单项的大小,尽管代价是必须自己呈现该项。
请注意,这不会导致自动调整大小:您需要使用 GDI+ 函数来计算所需的大小。
老问题,但我对ToolStripMenuItem
显示的 a有同样的问题NotifyIcon
。解决了设置AutoSize = False
,但它没有很好地绘制文本,我不明白为什么。然后我不得不自己处理它的 Paint 事件来绘制它。
Private Sub OneMenuItem_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles OneMenuItem.Paint
If Me.DesignMode Then Return
Dim g As Graphics = e.Graphics
Dim it = OneMenuItem
Dim p = it.GetCurrentParent
Using b As New Drawing.SolidBrush(it.ForeColor)
g.DrawString(it.Text, it.Font, b, p.Padding.Left + 4 + it.Padding.Left, p.Padding.Top + 4 + it.Padding.Top)
End Using
End Sub
不要问我那些魔法 4 是什么,它们在 DesignMode 中比较两个绘制的文本效果很好(它在设计模式下绘制文本 ok,你可以比较)。
VS2008,顺便说一句。