我有一个名为clickEvent的字符串变量,它可以包含不同的字符串,如“buttonAdd_Click”或“buttonSub_Click”或“buttonComp_Click”等。 现在我需要将写入字符串的click事件分配给名为buttonCalc的按钮。
buttonCalc.click + = new RoutedEventHandler(clickEvent)显然不起作用,因为clickEvent是变量而不是方法。
我怎样才能使这件事有效?
由于
答案 0 :(得分:0)
你可以通过反思来做到这一点:
private void AssignClickEvent(string methodName, Button button)
{
var method = this.GetType().GetMethod(methodName, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
var ev = button.GetType().GetEvent("Click");
var handler = method.CreateDelegate(typeof(RoutedEventHandler), this);
ev.AddEventHandler(button, handler);
}
然后使用方法名称和要分配给它的按钮调用它:
this.AssignClickEvent("ButtonAdd_Click", this.ButtonAdd);
那就是说,你可能想解释一下你为什么这样做,因为它们可能更容易。