如何将单击操作添加到动态创建的 ToolStripMenuItem.DropDown 项?



所以我基于一个文件在favsToolStripMenuItem.DropDown (ToolStripMenuItem(中创建一些项目:

using (StreamReader reader = new StreamReader("text.ini"))
{
while (true)
{
string line = reader.ReadLine();
if (line== null)
break;
favsToolStripMenuItem.DropDown.Items.Add(line);
}
}

但是如何为他们添加点击事件呢?我想要一个基于项目名称(文本(的点击事件。

存根你的点击方法:

private void DropDown_Click(object sender, EventArgs e) {
ToolStripItem tsi = sender as ToolStripItem;
if (tsi != null) {
MessageBox.Show(tsi.Text);
}
}

,然后使用包含事件处理程序的 Add 参数:

favsToolStripMenuItem.DropDown.Items.Add(line, null, DropDown_Click);

首先,您需要在创建每个菜单项时分配事件。

using (StreamReader reader = new StreamReader("text.ini"))
{
while (true)
{
string line = reader.ReadLine();
if (line== null)
break;
ToolStripMenuItem menu = new ToolStripMenuItem(line);
menu.Click += new EventHandler(menu_Click);
favsToolStripMenuItem.DropDown.Items.Add(menu);
}
}

现在,每个子菜单项都有自己的事件,单击时要触发。这是您根据项目的名称/文本选择要触发的事件的方式,

void menu_Click(object sender, EventArgs e)
{
var menuItem = sender as MenuItem; 
var menuText = menuItem.Text;
switch(menuText) {
case "MenuItem1":
// menu item1 clicked .. do something 
break;
case "MenuItem2":
// menu item2 clicked .. do something 
break;
. ...
}

最新更新