Martin
Martin

Reputation: 5

Toolstripmenuitem click event

I use this code to add an item to my menu:

private void oKToolStripMenuItem2_Click(object sender, EventArgs e)
{
    if (string.IsNullOrEmpty(toolStripTextBox3.Text))
    {
        MessageBox.Show("Please enter a username in the textbox.", "Error");
        return;
    }
    var username = usernamesToolStripMenuItem1.DropDownItems.Add(toolStripTextBox3.Text);
    username.Name = toolStripTextBox3.Text;
    Properties.Settings.Default.Usernames.Add(toolStripTextBox3.Text);
    toolStripTextBox3.Clear();
}

How do I make/call it's click event? The goal is that when you click on a username, it fills it in a textbox. I was hoping there'd be a .selecteditem but I can't find it.

Upvotes: 0

Views: 26283

Answers (3)

sasha_gud
sasha_gud

Reputation: 1735

You can create menu item first and then assign different events to it:

    private void addNameToolStripMenuItem_Click(object sender, EventArgs e)
    {
        ...
        var newItem = new ToolStripMenuItem(toolStripTextBox3.Text);
        newItem.Click +=new EventHandler(addedItemClickEvent);
        newItem.Name = toolStripTextBox3.Text;
        usernamesToolStripMenuItem1.DropDownItems.Add(newItem);
        //Properties.Settings.Default.Usernames.Add(toolStripTextBox3.Text);
        toolStripTextBox3.Clear();
    }

You can then analyze sender name to perform various actions:

    private void addedItemClickEvent(object sender, EventArgs e)
    {
        MessageBox.Show((sender as ToolStripMenuItem).Text);
    }

Upvotes: 1

Alireza
Alireza

Reputation: 5056

Just use the overload of Add method that accepts a ToolStripItem as input and create that item using ToolStripLabel's constructor that receives a delegate as input:

private void oKToolStripMenuItem2_Click(object sender, EventArgs e)
{
    if (string.IsNullOrEmpty(toolStripTextBox3.Text))
    {
        MessageBox.Show("Please enter a username in the textbox.", "Error");
        return;
    }

    var username = usernamesToolStripMenuItem1.DropDownItems.Add(
                         new ToolStripLabel(toolStripTextBox3.Text, (Image) null,
                         false, toolstrip_click));

    username.Name = toolStripTextBox3.Text;
    Properties.Settings.Default.Usernames.Add(toolStripTextBox3.Text);
    toolStripTextBox3.Clear();
}

void toolstrip_click(object sender, EventArgs e)
{
    MessageBox.Show(((ToolStripLabel)sender).Text);  // Write your code here
}

Upvotes: 0

Grant Winney
Grant Winney

Reputation: 66439

Subscribe to the Click event after creating the menu item.

You can do this on a single line:

username.Click += (s, e) => SomeTextBox.Text = "test";

Or create a separate method if that's easier for you to read:

private void oKToolStripMenuItem2_Click(object sender, EventArgs e)
{
    ...
    var username = usernamesToolStripMenuItem1.DropDownItems.Add(toolStripTextBox3.Text);
    username.Click += username_Click;
    ...
}

void username_Click(object sender, EventArgs e)
{
    SomeTextBox.Text = "test";
}

Upvotes: 0

Related Questions