首先,我的英语不是很好,所以如果你能够善良,我们将不胜感激。感谢。
现在我的问题,就像我在标题中所说,我想在另一个方法中将“方法名称”作为参数传递。就像一张图片胜过千言万语,我的功能有一大块:
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
}
对不起,如果对某些人不清楚,我缺少一些词汇......
感谢您的帮助。
答案 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)