将目标方法作为参数传递

时间:2011-09-25 10:07:18

标签: c#

首先,我的英语不是很好,所以如果你能够善良,我们将不胜感激。感谢。

现在我的问题,就像我在标题中所说,我想在另一个方法中将“方法名称”作为参数传递。就像一张图片胜过千言万语,我的功能有一大块:

    public void RemoveDecimalPoints(TextBox txtBoxName, Func<string, TextBox> txtBoxMethod)
    {
        //Some Code

        txtBoxName.KeyPress += new KeyPressEventHandler(txtBoxMethod);
    }

我希望第二个参数指向另一个方法:

    private void txtIncomeSelfValue1_KeyPress(object sender, KeyPressEventArgs e)
    {
        //Some Code
    }

对不起,如果对某些人不清楚,我缺少一些词汇......

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

假设您从包含RemoveDecimalPoints方法的同一个类中调用此txtIncomeSelfValue1_KeyPress方法,您可以像这样传递它:

RemoveDecimalPoints(someTextBox, this.txtIncomeSelfValue1_KeyPress);

但您必须修改签名,因为Func<string, TextBox>txtIncomeSelfValue1_KeyPress方法不匹配:

public void RemoveDecimalPoints(TextBox txtBoxName, KeyPressEventHandler txtBoxMethod)
{
    //Some Code
    txtBoxName.KeyPress += txtBoxMethod;
}

答案 1 :(得分:1)

如果您愿意像这样编写代码:

RemoveDecimalPoints(txtBoxName, txtIncomeSelfValue1_KeyPress);

然后你可以使用:

public void RemoveDecimalPoints(
    TextBox txtBoxName,
    KeyPressEventHandler txtBoxMethod)
{
    //Some Code

    txtBoxName.KeyPress += txtBoxMethod;
}

如果你想使用string,那么你需要使用反射,你的签名需要看起来像这样:

void RemoveDecimalPoints(TextBox txtBoxName, string txtBoxMethod)