閱讀英文

共用方式為


DrawItemEventHandler 代理人

定義

表示處理 ComboBoxListBoxMenuItemTabControl 控制項之 DrawItem 事件的方法。

C#
public delegate void DrawItemEventHandler(object sender, DrawItemEventArgs e);
C#
public delegate void DrawItemEventHandler(object? sender, DrawItemEventArgs e);

參數

sender
Object

事件的來源。

e
DrawItemEventArgs

DrawItemEventArgs,其中包含事件資料。

範例

下列程式碼範例示範具有擁有者繪製功能表項目的功能表。 這個範例會 AddHandler 使用 語句和 AddressOf 運算子來指定委派來處理 MenuItem.DrawItem 事件。 若要執行範例位置,請將它貼到匯入 System、System.Windows.Forms 和 System.Drawing 命名空間的表單中。 確定所有事件都與其事件處理方法相關聯。

C#
// Declare the MainMenu control.
internal System.Windows.Forms.MainMenu MainMenu1;

// Declare MenuItem2 as With-Events because it will be user drawn.
internal System.Windows.Forms.MenuItem MenuItem2;

private void InitializeMenu()
{

    // Create MenuItem1, which will be drawn by the operating system.
    MenuItem MenuItem1 = new MenuItem("Regular Menu Item");

    // Create MenuItem2.
    MenuItem2 = new MenuItem("Custom Menu Item");

    // Set OwnerDraw property to true. This requires handling the
    // DrawItem event for this menu item.
    MenuItem2.OwnerDraw = true;

    //Add the event-handler delegate to handle the DrawItem event.
    MenuItem2.DrawItem += new DrawItemEventHandler(DrawCustomMenuItem);
    
    // Add the items to the menu.
    MainMenu1 = new MainMenu(new MenuItem[]{MenuItem1, MenuItem2});																													  

    // Add the menu to the form.
    this.Menu = this.MainMenu1;
}

// Draw the custom menu item.
private void DrawCustomMenuItem(object sender, 
    DrawItemEventArgs e)
{

    // Cast the sender to MenuItem so you can access text property.
    MenuItem customItem = (MenuItem) sender;

    // Create a Brush and a Font to draw the MenuItem.
    System.Drawing.Brush aBrush = System.Drawing.Brushes.DarkMagenta;
    Font aFont = new Font("Garamond", 10, 
        FontStyle.Italic, GraphicsUnit.Point);

    // Get the size of the text to use later to draw an ellipse
    // around the item.
    SizeF stringSize = e.Graphics.MeasureString(
        customItem.Text, aFont);

    // Draw the item and then draw the ellipse.
    e.Graphics.DrawString(customItem.Text, aFont, 
        aBrush, e.Bounds.X, e.Bounds.Y);
    e.Graphics.DrawEllipse(new Pen(System.Drawing.Color.Black, 2),
        new Rectangle(e.Bounds.X, e.Bounds.Y, 
        (System.Int32)stringSize.Width,
        (System.Int32)stringSize.Height));
}

備註

建立 DrawItemEventArgs 委派時,必須識別處理事件的方法。 若要使事件與您的事件處理常式產生關聯,請將委派的執行個體 (Instance) 加入至事件。 除非您移除委派,否則每當事件發生時就會呼叫事件處理常式。 如需事件處理常式委派的詳細資訊,請參閱 處理和引發事件

擴充方法

GetMethodInfo(Delegate)

取得表示特定委派所代表之方法的物件。

適用於

產品 版本
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

另請參閱