2015-09-25 62 views
0

我有一个每次调用click事件的for循环。我想追加一些字符串到函数名。 说,button_click话,我希望它是Button_click1,Button_click2等。如何将一些字符串附加到函数名称。

我想在值1,2等执行一些操作.. 请建议是否有访问该信息的任何其他方式。

线程可以是我会选择的最后一个选项。

+0

当您实际运行代码(主要是)时,方法名称无关紧要。你在做什么? – Sayse

+0

您是否试图在同一个对象上调用多个方法,其中每个方法名称除了您打算从循环索引中检索的数字后缀之外都是相同的? –

回答

0

你可以尝试创建一个Button数组,然后你可以创建一个事件来点击数组中的任何按钮。

比,你可以使用一个for循环,关闭了包含当前索引的变量:

for(int i = 0; i < buttons.Length; i++) 
{ 
    //it's important to have this; closing over the loop variable would be bad 
    int index = i; 
    buttons[i].Click += (sender, args) => SomeMethod(buttons[index], index); 
} 

这可能将要拯救的代码有很多行,更容易为好。

0

我想你应该只是把所有的按钮在列表中,像这样:

List<Button> ButtonList = new List<Button>(){Button1, Button2}; 

然后就叫Button_Click为每个按钮像这样:

Foreach(Button button in ButtonList) 
    button.Button_Click(this, new EventArgs()); 
1

其他的答案更正确的我的钱,但如果你真的需要基于字符串的调用我认为你需要使用Reflection类。

String suffix = "_Click1"; 
Type myType = typeof(MyClass); 
myType.InvokeMember("Button"+ suffix, 
      BindingFlags.DeclaredOnly | 
      BindingFlags.Public | BindingFlags.NonPublic | 
      BindingFlags.Instance | BindingFlags.InvokeMethod, null, yourButtonObject, null);