Reputation: 5
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
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
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
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