DrawItemEventHandler デリゲート
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)


DrawItemEventArgs デリゲートを作成する場合は、イベントを処理するメソッドを識別してください。イベントをイベント ハンドラに関連付けるには、デリゲートのインスタンスをイベントに追加します。デリゲートを削除しない限り、そのイベントが発生すると常にイベント ハンドラが呼び出されます。イベント ハンドラ デリゲートの詳細については、「イベントとデリゲート」を参照してください。

オーナー描画のメニュー項目を持つメニューを次のコード例に示します。この例では、AddHandler ステートメントと AddressOf 演算子を使用して、MenuItem.DrawItem イベントを処理するデリゲートを指定しています。この例を実行するには、次のコードをフォームに貼り付けます。このフォームは、System 名前空間、System.Windows.Forms 名前空間、および System.Drawing System.Drawing 名前空間をインポートします。必ずすべてのイベントをイベント処理メソッドに関連付けるようにしてください。
' 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

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からDrawItemEventHandler デリゲートを検索する場合は、下記のリンクをクリックしてください。

- DrawItemEventHandler デリゲートのページへのリンク