工具条菜单项单击事件

本文关键字:事件 单击 菜单项 工具 | 更新日期: 2023-09-27 18:13:57

我使用下面的代码为我的菜单添加一个项目:

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();
}

我如何制作/调用它的点击事件?目标是,当您单击用户名时,它会在文本框中填充该用户名。我希望有一个。selecteditem,但是我找不到。

工具条菜单项单击事件

您可以先创建菜单项,然后为其分配不同的事件:

    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();
    }

然后您可以分析发件人名称以执行各种操作:

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

创建菜单项后订阅Click事件

您可以在单行中完成:

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

或者创建一个单独的方法,如果你更容易阅读:

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";
}

只需使用Add方法的过载,该方法接受ToolStripItem作为输入,并使用ToolStripLabel的构造函数接收委托作为输入来创建该项目:

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
}