[英]Customize ToolStripMenuItem
我想通过重写 OnPaint 函数来自定义 ToolStripMenuItem。 这是一个 MyToolStripMenuItem:
public class MyToolStripMenuItem : ToolStripMenuItem
{
public MyToolStripMenuItem()
:base()
{
}
public MyToolStripMenuItem(string t)
:base(t)
{
}
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
Rectangle r = this.Bounds;
g.FillRectangle(Brushes.Blue, r);
g.DrawString(this.Text, this.Font, Brushes.Red, r);
}
}
在我的代码中,我将在项目的边界中填充蓝色。 现在,我将在 menustrip 上创建一个项目列表:
MyToolStripMenuItem1
|___MyToolStripMenuItem2
|___MyToolStripMenuItem3
我不知道为什么 MyToolStripMenuItem3 没有蓝色背景。
这是我的源代码:
http://www.mediafire.com/?2qhmjzzfzzn
请帮我。 谢谢。
这不是用ToolStripMenuItem完成的方式。 您为MenuStrip提供了自定义渲染器。 示例代码在此线程中 。
使用 OnRenderMenuItemBackground() 的问题在于它适用于整个菜单,而不仅仅是一个 ToolStripMenuItem。
代码中的错误在于 Rectangle r = this.Bounds; 这会产生错误的区域。 将其更改为 Rectangle r = e.ClipRectangle ,它应该可以正常工作。 (由于某种原因,Bounds 有错误的 Y 分量)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.