0

我有一个名为 clickEvent 的字符串变量,它可以包含不同的字符串,如“buttonAdd_Click”或“buttonSub_Click”或“buttonComp_Click”等。现在我需要将写入字符串的点击事件分配给一个名为 buttonCalc 的按钮。

buttonCalc.click += new RoutedEventHandler(clickEvent) 显然不起作用,因为 clickEvent 是变量而不是方法。

我怎样才能让这个东西工作?

谢谢

4

1 回答 1

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);

也就是说,您可能想解释为什么要这样做,因为它们可能是一种更简单的方法。

于 2013-06-02T08:56:07.347 回答