DrawItemEventHandler-Delegat
Stellt die Methode für die Behandlung des DrawItem-Ereignisses der Steuerelemente ComboBox, ListBox, MenuItem oder TabControl dar.
Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)
Syntax
'Declaration
Public Delegate Sub DrawItemEventHandler ( _
sender As Object, _
e As DrawItemEventArgs _
)
'Usage
Dim instance As New DrawItemEventHandler(AddressOf HandlerMethod)
public delegate void DrawItemEventHandler (
Object sender,
DrawItemEventArgs e
)
public delegate void DrawItemEventHandler (
Object^ sender,
DrawItemEventArgs^ e
)
/** @delegate */
public delegate void DrawItemEventHandler (
Object sender,
DrawItemEventArgs e
)
JScript unterstützt die Verwendung von Delegaten, aber nicht die Deklaration von neuen Delegaten.
Parameter
- sender
Die Quelle des Ereignisses.
- e
Ein DrawItemEventArgs, das die Ereignisdaten enthält.
Hinweise
Beim Erstellen eines DrawItemEventArgs-Delegaten bestimmen Sie die Methode für die Ereignisbehandlung. Um das Ereignis mit dem Ereignishandler zu verknüpfen, fügen Sie dem Ereignis eine Instanz des Delegaten hinzu. Der Ereignishandler wird bei jedem Eintreten des Ereignisses aufgerufen, sofern der Delegat nicht entfernt wird. Weitere Informationen über Ereignishandlerdelegaten finden Sie unter Ereignisse und Delegaten.
Beispiel
Im folgenden Codebeispiel wird ein Menü mit einem ownerdrawn-Menüelement dargestellt. In diesem Beispiel werden die AddHandler-Anweisung und der AddressOf-Operator zum Festlegen eines Delegaten verwendet, der das MenuItem.DrawItem-Ereignis behandelt. Fügen Sie das Beispiel für die Ausführung in ein Formular ein, in dem der System-Namespace, der System.Windows.Forms-Namespace und der System.Drawing-Namespace importiert werden. Stellen Sie sicher, dass allen Ereignissen die entsprechenden Methoden für die Ereignisbehandlung zugeordnet sind.
' 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, stringSize.Width, _
stringSize.Height))
End Sub
// 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));
}
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.
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
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
System.Windows.Forms-Namespace
DrawItemEventArgs-Klasse
ComboBox-Klasse
ListBox
MenuItem
TabControl