如何一次编程多个WindowsForms?

时间:2016-12-20 12:14:35

标签: c# winforms for-loop

我有很多toolStripMenuItem,我希望这些都能做同样的功能,但是还有另一个参数。这有可能以for循环编程吗?

所以这就是我得到的:

condform

提前致谢

2 个答案:

答案 0 :(得分:4)

为3个控件设置OnClick只有一个方法:

private void toolStripMenuItem_Click(object sender, EventArgs e) 
{
    //I suppose this is MenuItem if it something else you should write correct control

    MenuItem item = (MenuItem)sender;
    int attributeValue = 0;

    if(sender.ID == "toolStripMenuItem1")
    {
        attributeValue=1
    }
    else if (sender.ID == "toolStripMenuItem2")
    {
       attributeValue=2
    }
    else if(sender.ID == "toolStripMenuItem3")
    {
       attributeValue=3
    }

    myFunction(attributeValue);
}

如果你有严格的控件名称:toolStripMenuItem1,toolStripMenuItem2等等。

 MenuItem item = (MenuItem)sender;
 string numberID = string.Concat(item.ID.Where(x=> char.IsNumber(x)));
 myFunction(int.Parse(numberID));

答案 1 :(得分:1)

根据你的评论,你可以迭代ToolStripMenu的Children,并订阅for循环。类似的东西:

foreach(ToolStripMenuItem i in toolStripMenu1.Children)
{
    i.Click += toolStripMenuItem_Click;
}

然后在toolStripMenuItem_Click中,有:

if(sender as ToolStripMenuItem == toolStripMenuItem1)
{
    ....
}
if(sender as ToolStripMenuItem == toolStripMenuItem2)
{
    ....
}
    ....

但可能没有任何收获。关键是某处你必须要么提供一个参数(如在你的问题的代码中),要么检查哪个项称为方法,以便决定做什么。我不是说不能是例外。我只是不容易找到一个。