我有一个for循环,每次调用click事件。我想在函数名称后附加一些字符串。 说,button_click然后我希望它是Button_click1,Button_click2等..
我想对值1,2等执行一些操作。 请建议是否有其他方式来访问此信息。
线程可以是我选择的最后一个选项。
答案 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());