Dinamicamente adicionar itens a um menu de contexto & conjunto de ações Clique

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

  •  03-07-2019
  •  | 
  •  

Pergunta

Eu tenho uma lista de strings que é regenerado a cada 5 segundos. Eu quero criar um menu de contexto e definir seus itens dinamicamente usando esta lista. O problema é que eu não tenho mesmo uma idéia de como fazer isso e gerenciar a ação Clique para cada item gerado (que deve usar o mesmo método com diferentes parâmetros DoSomething ( "item_name")).

Como devo fazer isso?

Obrigado pelo seu tempo. Com os melhores cumprimentos.

Foi útil?

Solução

Assim, você pode limpar os itens do menu de contexto com:

myContextMenuStrip.Items.Clear();

Você pode adicionar um item chamando:

myContextMenuStrip.Items.Add(myString);

O menu de contexto tem um evento ItemClicked. O manipulador poderia ser semelhante a isso:

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

Parece funcionar OK para mim. Deixe-me saber se eu entendi mal a sua pergunta.

Outras dicas

Outra alternativa usando um objeto 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);


Dentro do evento ItemClicked do seu myContextMenuStrip, você pode verificar qual opção foi escolhida ( com base na propriedade de nome do item de 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...");
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top