Aggiungi dinamicamente elementi a un menu contestuale & amp; imposta l'azione Click

StackOverflow https://stackoverflow.com/questions/225394

  •  03-07-2019
  •  | 
  •  

Domanda

Ho un elenco di stringhe che viene rigenerato ogni 5 secondi. Voglio creare un menu contestuale e impostarne gli elementi in modo dinamico usando questo elenco. Il problema è che non ho nemmeno idea di come farlo e di gestire l'azione Click per ogni elemento generato (che dovrebbe usare lo stesso metodo con diversi parametri DoSomething (" item_name ")).

Come dovrei farlo?

Grazie per il tuo tempo. Cordiali saluti.

È stato utile?

Soluzione

Quindi, puoi cancellare gli elementi dal menu contestuale con:

myContextMenuStrip.Items.Clear();

Puoi aggiungere un elemento chiamando:

myContextMenuStrip.Items.Add(myString);

Il menu di scelta rapida ha un evento ItemClicked. Il tuo gestore potrebbe apparire così:

private void myContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    DoSomething(e.ClickedItem.Text);
}

Sembra funzionare bene per me. Fammi sapere se ho frainteso la tua domanda.

Altri suggerimenti

Un'altra alternativa che utilizza un oggetto ToolStripMenuItem :

//////////// Create a new "ToolStripMenuItem" object:
ToolStripMenuItem newMenuItem= new ToolStripMenuItem();

//////////// Set a name, for identification purposes:
newMenuItem.Name = "nameOfMenuItem";

//////////// Sets the text that will appear in the new context menu option:
newMenuItem.Text = "This is another option!";

//////////// Add this new item to your context menu:
myContextMenuStrip.Items.Add(newMenuItem);


All'interno dell'evento ItemClicked del tuo myContextMenuStrip , puoi verificare quale opzione è stata scelta ( in base alla proprietà name della voce di menu )

private void myContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    ToolStripItem item = e.ClickedItem;

    //////////// This will show "nameOfMenuItem":
    MessageBox.Show(item.Name, "And the clicked option is...");
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top