Cette documentation est archivée et n’est pas conservée.

DrawItemEventHandler, délégué

Mise à jour : novembre 2007

Représente la méthode qui gérera l'événement DrawItem d'un contrôle ComboBox, ListBox, MenuItem ou TabControl.

Espace de noms :  System.Windows.Forms
Assembly :  System.Windows.Forms (dans System.Windows.Forms.dll)

public delegate void DrawItemEventHandler(
	Object sender,
	DrawItemEventArgs e
)
/** @delegate */
public delegate void DrawItemEventHandler(
	Object sender,
	DrawItemEventArgs e
)
JScript ne prend pas en charge les délégués.

Paramètres

sender
Type : System.Object

Source de l'événement.

e
Type : System.Windows.Forms.DrawItemEventArgs

DrawItemEventArgs qui contient les données d'événement.

Lorsque vous créez un délégué DrawItemEventArgs, vous identifiez la méthode qui gérera l'événement. Pour associer l'événement à votre gestionnaire d'événements, ajoutez une instance du délégué à l'événement. Le gestionnaire d'événements est appelé chaque fois qu'un événement se produit, sauf si vous supprimez le délégué. Pour plus d'informations sur les délégués de gestionnaires d'événements, consultez Événements et délégués.

L'exemple de code suivant illustre un menu avec un élément de menu owner-drawn. Cet exemple utilise l'instruction AddHandler et l'opérateur AddressOf pour désigner un délégué devant gérer l'événement MenuItem.DrawItem. Pour exécuter l'exemple, collez-le dans un formulaire vide qui importe les espaces de noms System, System.Windows.Forms et System.Drawing. Vérifiez que tous les événements sont associés à leurs méthodes de gestion d'événements.

	// 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.
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 = 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.set_OwnerDraw(true);
    //Add the event-handler delegate to handle the DrawItem event.
    menuItem2.add_DrawItem(new DrawItemEventHandler(DrawCustomMenuItem));
    // Add the items to the menu.
    mainMenu1 = new MainMenu(new MenuItem[] { menuItem1, menuItem2 });
    // Add the menu to the form.
    this.set_Menu(this.mainMenu1);
} //InitializeMenu

// 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.get_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.get_Graphics().MeasureString(customItem.get_Text(), aFont);
    // Draw the item and then draw the ellipse.
    e.get_Graphics().
        DrawString(customItem.get_Text(), aFont, aBrush,
        e.get_Bounds().get_X(), e.get_Bounds().get_Y());
    e.get_Graphics().
        DrawEllipse(new Pen(System.Drawing.Color.get_Black(), 2),
        new Rectangle(e.get_Bounds().get_X(), e.get_Bounds().get_Y(),
        System.Convert.ToInt32((System.Int32)stringSize.get_Width()),
        System.Convert.ToInt32((System.Int32)stringSize.get_Height())));
} //DrawCustomMenuItem


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0, 2.0, 1.1, 1.0
Afficher: