所以我基于一个文件在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;
. ...
}