请参阅下面的两张图片。我不希望菜单中的每个项目都是最大的高度。它应该适合内容的大小。我玩了很多属性并且无法阻止这种行为。有可能吗?
Desired Height http://www.blakerobertson.com/storage/perm/contextNormal.png Fixed Height For all! http://www.blakerobertson.com/storage/perm/contextThick.png
答案 0 :(得分:2)
将MenuItem.OwnerDraw设置为true,然后处理MenuItem.MeasureItem事件。这允许您告诉Windows窗体这个菜单项的大小,与其他菜单项的大小无关,尽管这样做的代价是必须自己渲染项目。
请注意,不会导致自动调整大小:您需要使用GDI +函数来计算所需的大小。
答案 1 :(得分:0)
旧问题,但我对ToolStripMenuItem
显示的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中的两个绘制文本(它在设计模式下绘制文本,你可以比较)。