次の方法で共有


MenuItem.DrawItem イベント

メニュー項目の OwnerDraw プロパティが true に設定されていて、そのメニュー項目の描画が要求された場合に発生します。

Public Event DrawItem As DrawItemEventHandler
[C#]
public event DrawItemEventHandler DrawItem;
[C++]
public: __event DrawItemEventHandler* DrawItem;

[JScript] JScript では、このクラスで定義されているイベントを処理できます。ただし、独自に定義することはできません。

イベント データ

イベント ハンドラが、このイベントに関連するデータを含む、DrawItemEventArgs 型の引数を受け取りました。次の DrawItemEventArgs プロパティには、このイベントの固有の情報が記載されます。

プロパティ 説明
BackColor 描画されている項目の背景色を取得します。
Bounds 描画されている項目の境界を表す四角形を取得します。
Font 描画されている項目に割り当てられているフォントを取得します。
ForeColor 描画されている項目の前景色を取得します。
Graphics 項目を描画するグラフィックス表面を取得します。
Index 描画されている項目のインデックス値を取得します。
State 描画されている項目の状態を取得します。

解説

DrawItem イベント ハンドラに渡された DrawItemEventArgs 引数は、 Graphics オブジェクトを提供し、メニュー項目の表面で描画操作やその他のグラフィック操作を実行できるようにします。このイベント ハンドラを使用して、アプリケーションの要件を満たすカスタム メニューを作成できます。イベント処理の詳細については、「 イベントの利用 」を参照してください。

使用例

[Visual Basic, C#, C++] DrawItem イベントを処理する方法を次の例に示します。この例では、 Brush および Font を使用してメニュー項目を描画し、続いてメニュー項目の周りに Rectangle を描画しています。描画は Graphics オブジェクトを通じて実行されます。このオブジェクトは DrawItemEventArgs パラメータのイベント ハンドラに渡されます。この例では、項目の OwnerDraw プロパティを true に初期化済みであることを前提にしています。

 
' The DrawItem event handler.
Private Sub MenuItem1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles MenuItem1.DrawItem


    Dim MyCaption As String = "Owner Draw Item1"

    ' Create a Brush and a Font with which to draw the item.
    Dim MyBrush As System.Drawing.Brush = System.Drawing.Brushes.AliceBlue
    Dim MyFont As New Font(FontFamily.GenericSerif, 14, FontStyle.Underline, GraphicsUnit.Pixel)
    Dim MySizeF As SizeF = e.Graphics.MeasureString(MyCaption, MyFont)

    ' Draw the item, and then draw a Rectangle around it.
    e.Graphics.DrawString(MyCaption, MyFont, MyBrush, e.Bounds.X, e.Bounds.Y)
    e.Graphics.DrawRectangle(Drawing.Pens.Black, New Rectangle(e.Bounds.X, e.Bounds.Y, MySizeF.Width, MySizeF.Height))

End Sub


[C#] 

// The DrawItem event handler.
private void menuItem1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{

    string myCaption = "Owner Draw Item1";

    // Create a Brush and a Font with which to draw the item.
    Brush myBrush = System.Drawing.Brushes.AliceBlue;
    Font myFont = new Font(FontFamily.GenericSerif, 14, FontStyle.Underline, GraphicsUnit.Pixel);
    SizeF mySizeF = e.Graphics.MeasureString(myCaption, myFont);

    // Draw the item, and then draw a Rectangle around it.
    e.Graphics.DrawString(myCaption, myFont, myBrush, e.Bounds.X, e.Bounds.Y);
    e.Graphics.DrawRectangle(Pens.Black, new Rectangle(e.Bounds.X, e.Bounds.Y, Convert.ToInt32(mySizeF.Width), Convert.ToInt32(mySizeF.Height)));

}

[C++] 
private:
    // The DrawItem event handler.
    void menuItem1_DrawItem(Object* /*sender*/, 
        System::Windows::Forms::DrawItemEventArgs* e) {

            String* myCaption = S"Owner Draw Item1";

            // Create a Brush and a Font with which to draw the item.
            Brush* myBrush = System::Drawing::Brushes::AliceBlue;
            System::Drawing::Font* myFont = 
                new System::Drawing::Font(FontFamily::GenericSerif, 
                14, FontStyle::Underline, GraphicsUnit::Pixel);
            SizeF mySizeF = 
                e->Graphics->MeasureString(myCaption, myFont);

            // Draw the item, and then draw a Rectangle around it.
            e->Graphics->DrawString(myCaption, myFont, myBrush, 
                (float)e->Bounds.X, (float)e->Bounds.Y);
            e->Graphics->DrawRectangle(Pens::Black, 
                Rectangle(e->Bounds.X, e->Bounds.Y, 
                Convert::ToInt32(mySizeF.Width), 
                Convert::ToInt32(mySizeF.Height)));

    }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

MenuItem クラス | MenuItem メンバ | System.Windows.Forms 名前空間 | OwnerDraw | MeasureItem