C# 如何向动态创建的ToolStripMenuItem.DropDown项添加单击操作?
因此,我在favsToolStripMenuItem.DropDown(ToolStripMenuItem)中基于文件创建了一些项:C# 如何向动态创建的ToolStripMenuItem.DropDown项添加单击操作?,c#,winforms,C#,Winforms,因此,我在favsToolStripMenuItem.DropDown(ToolStripMenuItem)中基于文件创建了一些项: using (StreamReader reader = new StreamReader("text.ini")) { while (true) { string line = reader.ReadLine(); if (line== null) break; favsToolStripMenuItem.DropDo
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);
删除您的单击方法:
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);
首先,您需要在创建每个菜单项时指定事件
使用(StreamReader=newstreamreader(“text.ini”))
{
while(true)
{
字符串行=reader.ReadLine();
如果(行==null)
打破
ToolStripMenuItem菜单=新建ToolStripMenuItem(行);
menu.Click+=新建事件处理程序(menu\Click);
favsToolStripMenuItem.DropDown.Items.Add(菜单);
}
}
现在,每个子菜单项都有自己的事件要在单击时触发。这是如何根据项目的名称/文本选择要触发的事件
void菜单\单击(对象发送者,事件参数e)
{
var menuItem=发送方作为menuItem;
var menuText=menuItem.Text;
开关(菜单文本){
案例“MenuItem1”:
//菜单项1单击..执行操作
打破
案例“MenuItem2”:
//菜单项2已单击..执行操作
打破
. ...
}
创建每个菜单项时,首先需要分配事件
使用(StreamReader=newstreamreader(“text.ini”))
{
while(true)
{
字符串行=reader.ReadLine();
如果(行==null)
打破
ToolStripMenuItem菜单=新建ToolStripMenuItem(行);
menu.Click+=新建事件处理程序(menu\Click);
favsToolStripMenuItem.DropDown.Items.Add(菜单);
}
}
现在,每个子菜单项都有自己的事件要在单击时触发。这是如何根据项的名称/文本选择要触发的事件
void菜单\单击(对象发送者,事件参数e)
{
var menuItem=发送方作为menuItem;
var menuText=menuItem.Text;
开关(菜单文本){
案例“MenuItem1”:
//菜单项1单击..执行操作
打破
案例“MenuItem2”:
//菜单项2已单击..执行操作
打破
. ...
}