簡體   English   中英

自定義 ToolStripMenuItem

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM