DrawItemEventHandler 대리자

정의

ComboBox, ListBox, MenuItem 또는 TabControl 컨트롤의 DrawItem 이벤트를 처리할 메서드를 나타냅니다.Represents the method that will handle the DrawItem event of a ComboBox, ListBox, MenuItem, or TabControl control.

public delegate void DrawItemEventHandler(System::Object ^ sender, DrawItemEventArgs ^ e);
public delegate void DrawItemEventHandler(object sender, DrawItemEventArgs e);
type DrawItemEventHandler = delegate of obj * DrawItemEventArgs -> unit
Public Delegate Sub DrawItemEventHandler(sender As Object, e As DrawItemEventArgs)

매개 변수

sender
Object

이벤트 소스입니다.The source of the event.

e
DrawItemEventArgs

이벤트 데이터를 포함하는 DrawItemEventArgs입니다.A DrawItemEventArgs that contains the event data.

상속
DrawItemEventHandler

예제

다음 코드 예제는 소유자가 그린 메뉴 항목을 사용 하 여 메뉴를 보여 줍니다.The following code example demonstrates a menu with an owner-drawn menu item. 이 예제에서는 합니다 AddHandler 문 및 AddressOf 처리 하는 대리자를 지정 하는 연산자는 MenuItem.DrawItem 이벤트입니다.This example uses the AddHandler statement and the AddressOf operator to designate a delegate to handle the MenuItem.DrawItem event. 실행 예 대신 System, System.Windows.Forms 및 System.Drawing 네임 스페이스를 가져오는 폼에 붙여 합니다.To run the example place paste it in a form that imports the System, System.Windows.Forms, and System.Drawing namespaces. 모든 이벤트의 이벤트 처리 메서드를 사용 하 여 연결 되도록 합니다.Ensure all events are associated with their event-handling methods.

internal:
   // Declare the MainMenu control.
   System::Windows::Forms::MainMenu^ MainMenu1;

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

private:
   void InitializeMenu()
   {
      
      // Create MenuItem1, which will be drawn by the operating system.
      MenuItem^ MenuItem1 = gcnew MenuItem( "Regular Menu Item" );
      
      // Create MenuItem2.
      MenuItem2 = gcnew 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 += gcnew DrawItemEventHandler( this, &Form1::DrawCustomMenuItem );
      
      // Add the items to the menu.
      array<MenuItem^>^temp0 = {MenuItem1,MenuItem2};
      MainMenu1 = gcnew MainMenu( temp0 );
      
      // Add the menu to the form.
      this->Menu = this->MainMenu1;
   }

   // Draw the custom menu item.
   void DrawCustomMenuItem( Object^ sender, DrawItemEventArgs^ e )
   {
      // Cast the sender to MenuItem so you can access text property.
      MenuItem^ customItem = dynamic_cast<MenuItem^>(sender);
      
      // Create a Brush and a Font to draw the MenuItem.
      System::Drawing::Brush^ aBrush = System::Drawing::Brushes::DarkMagenta;
      System::Drawing::Font^ aFont = gcnew System::Drawing::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, (float)e->Bounds.X, (float)e->Bounds.Y );
      e->Graphics->DrawEllipse( gcnew Pen( System::Drawing::Color::Black,2 ), Rectangle(e->Bounds.X,e->Bounds.Y,(System::Int32)stringSize.Width,(System::Int32)stringSize.Height) );
   }
// 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));
}
' Declare the MainMenu control.
Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu

' Declare MenuItem2 as With-Events because it will be user drawn.
Friend WithEvents MenuItem2 As System.Windows.Forms.MenuItem


Private Sub InitializeMenu()

    ' Create MenuItem1, which will be drawn by the operating system.
    Dim MenuItem1 As 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.
    AddHandler MenuItem2.DrawItem, New DrawItemEventHandler(AddressOf DrawCustomMenuItem)

    ' Add the items to the menu.
    MainMenu1 = New MainMenu(New MenuItem() {MenuItem1, MenuItem2})

    ' Add the menu to the form.
    Me.Menu = Me.MainMenu1
End Sub

' Draw the custom menu item.
Private Sub DrawCustomMenuItem(ByVal sender As Object, ByVal e As _
        System.Windows.Forms.DrawItemEventArgs)

    ' Cast the sender to MenuItem so you can access text property.
    Dim customItem As MenuItem = CType(sender, MenuItem)

    ' Create a Brush and a Font to draw the MenuItem.
    Dim aBrush As System.Drawing.Brush = System.Drawing.Brushes.DarkMagenta
    Dim aFont As New Font("Garamond", 10, FontStyle.Italic, _
        GraphicsUnit.Point)

    ' Get the size of the text to use later to draw an ellipse
    ' around the item.
    Dim stringSize As SizeF = 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, CInt(stringSize.Width), _
        CInt(stringSize.Height)))
End Sub

설명

DrawItemEventArgs 대리자를 만들 때, 이벤트를 처리할 메서드를 식별합니다.When you create a DrawItemEventArgs delegate, you identify the method that will handle the event. 이벤트를 이벤트 처리기와 연결하려면 대리자의 인스턴스를 해당 이벤트에 추가합니다.To associate the event with your event handler, add an instance of the delegate to the event. 대리자를 제거하지 않는 경우 이벤트가 발생할 때마다 이벤트 처리기가 호출됩니다.The event handler is called whenever the event occurs, unless you remove the delegate. 이벤트 처리기 대리자에 대 한 자세한 내용은 참조 하세요. 이벤트 처리 및 발생합니다.For more information about event handler delegates, see Handling and Raising Events.

확장 메서드

GetMethodInfo(Delegate)

지정된 대리자가 나타내는 메서드를 나타내는 개체를 가져옵니다.Gets an object that represents the method represented by the specified delegate.

적용 대상

추가 정보