Questa documentazione è stata archiviata e non viene gestita.

Classe ContextMenuStrip

Aggiornamento: novembre 2007

Rappresenta un menu di scelta rapida.

Spazio dei nomi:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)]
[ComVisibleAttribute(true)]
public class ContextMenuStrip : ToolStripDropDownMenu
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */
/** @attribute ComVisibleAttribute(true) */
public class ContextMenuStrip extends ToolStripDropDownMenu
public class ContextMenuStrip extends ToolStripDropDownMenu

ContextMenuStrip sostituisce ContextMenu. È possibile associare una classe ContextMenuStrip a qualsiasi controllo per visualizzare automaticamente il menu di scelta rapida quando si fa clic con il pulsante destro del mouse. È possibile visualizzare una classe ContextMenuStrip a livello di codice utilizzando il metodo Show. ContextMenuStrip supporta gli eventi Opening e Closing annullabili per gestire la compilazione dinamica e gli scenari che richiedono più clic. ContextMenuStrip supporta immagini, stato selezionato delle voci di menu, testo, tasti di scelta, tasti di scelta rapida e menu di scelta rapida con sottomenu.

Gli elementi riportati di seguito sono progettati specificamente per essere utilizzati senza problemi con ToolStripSystemRenderer e ToolStripProfessionalRenderer in tutti gli orientamenti. Per impostazione predefinita sono disponibili in fase di progettazione per il controllo ContextMenuStrip:

I menu di scelta rapida vengono in genere utilizzati per combinare diverse voci di menu da un oggetto MenuStrip di un form utili all'utente in un dato contesto dell'applicazione. È ad esempio possibile utilizzare un menu di scelta rapida assegnato a un controllo TextBox per fornire voci di menu per la modifica del tipo di carattere del testo, la ricerca di testo all'interno del controllo o per fornire funzionalità degli Appunti per copiare e incollare del testo. È anche possibile esporre in un menu di scelta rapida nuovi oggetti ToolStripMenuItem che non si trovano all'interno di MenuStrip al fine di fornire, in determinate situazioni, comandi che non sono appropriati per l'oggetto MenuStrip da visualizzare.

In genere un menu di scelta rapida viene visualizzato quando l'utente fa clic con il pulsante destro del mouse su un controllo o sul form stesso. Molti controlli visibili, nonché lo stesso oggetto Form, dispongono di una proprietà Control.ContextMenuStrip in grado di associare la classe ContextMenuStrip al controllo che visualizza il menu di scelta rapida. La classe ContextMenuStrip può essere utilizzata da più di un controllo.

Impostare la proprietà ToolStripDropDownMenu.ShowCheckMargin su true per lasciare spazio a sinistra dell'oggetto ToolStripMenuItem al fine di inserire un segno di spunta che indichi che la voce di menu è attivata o selezionata. Per impostazione predefinita, la proprietà ToolStripDropDownMenu.ShowImageMargin è impostata su true. Utilizzare lo spazio a sinistra dell'oggetto ToolStripMenuItem per visualizzare un'immagine per la voce di menu.

Benché l'oggetto ContextMenuStrip sostituisca il controllo ContextMenu delle versioni precedenti aggiungendo funzionalità, l'oggetto ContextMenu viene mantenuto per la compatibilità con le versioni precedenti e per l'utilizzo futuro, se lo si desidera.

Nell'esempio di codice riportato di seguito viene illustrato un oggetto ContextMenuStrip con l'aggiunta dinamica dell'elemento, la determinazione dinamica di SourceControl con riutilizzo e la gestione dell'evento Opening.

// This code example demonstrates how to handle the Opening event.
// It also demonstrates dynamic item addition and dynamic 
// SourceControl determination with reuse.
class Form3 : Form
{
    // Declare the ContextMenuStrip control.
    private ContextMenuStrip fruitContextMenuStrip;

    public Form3()
    {
        // Create a new ContextMenuStrip control.
        fruitContextMenuStrip = new ContextMenuStrip();

        // Attach an event handler for the 
        // ContextMenuStrip control's Opening event.
        fruitContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(cms_Opening);

        // Create a new ToolStrip control.
        ToolStrip ts = new ToolStrip();

        // Create a ToolStripDropDownButton control and add it
        // to the ToolStrip control's Items collections.
        ToolStripDropDownButton fruitToolStripDropDownButton = new ToolStripDropDownButton("Fruit", null, null, "Fruit");
        ts.Items.Add(fruitToolStripDropDownButton);

        // Dock the ToolStrip control to the top of the form.
        ts.Dock = DockStyle.Top;

        // Assign the ContextMenuStrip control as the 
        // ToolStripDropDownButton control's DropDown menu.
        fruitToolStripDropDownButton.DropDown = fruitContextMenuStrip;

        // Create a new MenuStrip control and add a ToolStripMenuItem.
        MenuStrip ms = new MenuStrip();
        ToolStripMenuItem fruitToolStripMenuItem = new ToolStripMenuItem("Fruit", null, null, "Fruit");
        ms.Items.Add(fruitToolStripMenuItem);

        // Dock the MenuStrip control to the top of the form.
        ms.Dock = DockStyle.Top;

        // Assign the MenuStrip control as the 
        // ToolStripMenuItem's DropDown menu.
        fruitToolStripMenuItem.DropDown = fruitContextMenuStrip;

        // Assign the ContextMenuStrip to the form's 
        // ContextMenuStrip property.
        this.ContextMenuStrip = fruitContextMenuStrip;

        // Add the ToolStrip control to the Controls collection.
        this.Controls.Add(ts);

        //Add a button to the form and assign its ContextMenuStrip.
        Button b = new Button();
        b.Location = new System.Drawing.Point(60, 60);
        this.Controls.Add(b);
        b.ContextMenuStrip = fruitContextMenuStrip;

        // Add the MenuStrip control last.
        // This is important for correct placement in the z-order.
        this.Controls.Add(ms);
    }

    // This event handler is invoked when the ContextMenuStrip
    // control's Opening event is raised. It demonstrates
    // dynamic item addition and dynamic SourceControl 
    // determination with reuse.
    void cms_Opening(object sender, System.ComponentModel.CancelEventArgs e)
    {
        // Acquire references to the owning control and item.
        Control c = fruitContextMenuStrip.SourceControl as Control;
        ToolStripDropDownItem tsi = fruitContextMenuStrip.OwnerItem as ToolStripDropDownItem;

        // Clear the ContextMenuStrip control's Items collection.
        fruitContextMenuStrip.Items.Clear();

        // Check the source control first.
        if (c != null)
        {
            // Add custom item (Form)
            fruitContextMenuStrip.Items.Add("Source: " + c.GetType().ToString());
        }
        else if (tsi != null)
        {
            // Add custom item (ToolStripDropDownButton or ToolStripMenuItem)
            fruitContextMenuStrip.Items.Add("Source: " + tsi.GetType().ToString());
        }

        // Populate the ContextMenuStrip control with its default items.
        fruitContextMenuStrip.Items.Add("-");
        fruitContextMenuStrip.Items.Add("Apples");
        fruitContextMenuStrip.Items.Add("Oranges");
        fruitContextMenuStrip.Items.Add("Pears");

        // Set Cancel to false. 
        // It is optimized to true based on empty entry.
        e.Cancel = false;
    }
}


System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Windows.Forms.Control
        System.Windows.Forms.ScrollableControl
          System.Windows.Forms.ToolStrip
            System.Windows.Forms.ToolStripDropDown
              System.Windows.Forms.ToolStripDropDownMenu
                System.Windows.Forms.ContextMenuStrip

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

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

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0, 2.0
Mostra: