次の方法で共有


ContextMenu.Popup イベント

ショートカット メニューが表示される前に発生します。

Public Event Popup As EventHandler
[C#]
public event EventHandler Popup;
[C++]
public: __event EventHandler* Popup;

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

イベント データ

イベント ハンドラが EventArgs 型の引数を受け取りました。

解説

このイベントを使用すると、 MenuItem オブジェクトが表示される前にそのオブジェクトを初期化できます。たとえば、ショートカット メニューを表示している TextBox に応じて、3 つの TextBox コントロールのうちの 1 つの ContextMenu を使用し、 ContextMenu 内に無効にするメニュー項目がある場合は、このイベントのイベント ハンドラを作成できます。 SourceControl プロパティを使用すると、どの TextBoxContextMenu が表示されるのかを確認して、適切な MenuItem オブジェクトを無効にできます。

イベント処理の詳細については、「 イベントの利用 」を参照してください。

使用例

[Visual Basic, C#, C++] ContextMenuPopup イベントのイベント ハンドラを作成する例を次に示します。このイベント ハンドラのコードは、ショートカット メニューを表示しているコントロールが pictureBox1 という名前の PictureBox コントロールと textBox1 という名前の TextBox コントロールのどちらであるかを判断します。どちらのコントロールが ContextMenu のショートカット メニューを表示したかに応じて、適切な MenuItem オブジェクトが ContextMenu に追加されます。この例は、フォーム内で定義されている contextMenu1 という名前の ContextMenu クラスのインスタンスが既にあることを前提にしています。この例は、 TextBoxPictureBox がフォームに追加され、これらのコントロールの ContextMenu プロパティが contextMenu1 に設定されていることも前提にしています。

 
Protected Sub MyPopupEventHandler(sender As System.Object, e As System.EventArgs)
    ' Define the MenuItem objects to display for the TextBox.
    Dim menuItem1 As New MenuItem("&Copy")
    Dim menuItem2 As New MenuItem("&Find and Replace")
    ' Define the MenuItem object to display for the PictureBox.
    Dim menuItem3 As New MenuItem("C&hange Picture")
    
    ' Clear all previously added MenuItems.
    contextMenu1.MenuItems.Clear()
    
    If contextMenu1.SourceControl Is textBox1 Then
        ' Add MenuItems to display for the TextBox.
        contextMenu1.MenuItems.Add(menuItem1)
        contextMenu1.MenuItems.Add(menuItem2)
    ElseIf contextMenu1.SourceControl Is pictureBox1 Then
        ' Add the MenuItem to display for the PictureBox.
        contextMenu1.MenuItems.Add(menuItem3)
    End If
End Sub 'MyPopupEventHandler '

[C#] 
protected void MyPopupEventHandler(System.Object sender, System.EventArgs e)
 {
    // Define the MenuItem objects to display for the TextBox.
    MenuItem menuItem1 = new MenuItem("&Copy");
    MenuItem menuItem2 = new MenuItem("&Find and Replace");
    // Define the MenuItem object to display for the PictureBox.
    MenuItem menuItem3 = new MenuItem("C&hange Picture");

    // Clear all previously added MenuItems.
    contextMenu1.MenuItems.Clear();
 
    if(contextMenu1.SourceControl == textBox1)
    {
       // Add MenuItems to display for the TextBox.
       contextMenu1.MenuItems.Add(menuItem1);
       contextMenu1.MenuItems.Add(menuItem2);
    }
    else if(contextMenu1.SourceControl == pictureBox1)
    {
       // Add the MenuItem to display for the PictureBox.
       contextMenu1.MenuItems.Add(menuItem3);
    }
 }

[C++] 
protected:
void MyPopupEventHandler(System::Object* /*sender*/, System::EventArgs* /*e*/)
 {
    // Define the MenuItem objects to display for the TextBox.
    MenuItem* menuItem1 = new MenuItem(S"&Copy");
    MenuItem* menuItem2 = new MenuItem(S"&Find and Replace");
    // Define the MenuItem object to display for the PictureBox.
    MenuItem* menuItem3 = new MenuItem(S"C&hange Picture");

    // Clear all previously added MenuItems.
    contextMenu1->MenuItems->Clear();
 
    if(contextMenu1->SourceControl == textBox1)
    {
       // Add MenuItems to display for the TextBox.
       contextMenu1->MenuItems->Add(menuItem1);
       contextMenu1->MenuItems->Add(menuItem2);
    }
    else if(contextMenu1->SourceControl == pictureBox1)
    {
       // Add the MenuItem to display for the PictureBox.
       contextMenu1->MenuItems->Add(menuItem3);
    }
 }

[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 ファミリ

参照

ContextMenu クラス | ContextMenu メンバ | System.Windows.Forms 名前空間