如何将一些字符串附加到函数名称。

时间:2015-09-25 08:39:22

标签: c# click string-concatenation

我有一个for循环,每次调用click事件。我想在函数名称后附加一些字符串。 说,button_click然后我希望它是Button_click1,Button_click2等..

我想对值1,2等执行一些操作。 请建议是否有其他方式来访问此信息。

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

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);
}

这可能会节省大量代码并且也更容易。

答案 2 :(得分:0)

我认为你应该把所有按钮放在一个列表中:

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

然后只需为每个按钮调用Button_Click,如下所示:

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