Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向动态创建的ToolStripMenuItem.DropDown项添加单击操作?_C#_Winforms - Fatal编程技术网

C# 如何向动态创建的ToolStripMenuItem.DropDown项添加单击操作?

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

因此,我在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);

删除您的单击方法:

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已单击..执行操作
打破
. ...
}