[英]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.