Question

I have a List of strings that is regenerated every 5 seconds. I want to create a Context Menu and set its items dynamically using this list. The problem is that I don't have even a clue how to do that and manage the Click action for every item generated (which should use the same method with different parameter DoSomething("item_name")).

How should I do this?

Thanks for your time. Best regards.

Was it helpful?

Solution

So, you can clear the items from the context menu with:

myContextMenuStrip.Items.Clear();

You can add an item by calling:

myContextMenuStrip.Items.Add(myString);

The context menu has an ItemClicked event. Your handler could look like so:

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

Seems to work OK for me. Let me know if I misunderstood your question.

OTHER TIPS

Another alternative using a ToolStripMenuItem object:

//////////// 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);


Inside the ItemClicked event of your myContextMenuStrip, you can check which option has been chosen (based on the name property of the menu item)

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...");
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top