C# 将目标方法作为参数传递
首先,我的英语不是很好,所以如果你能客气一点,我将不胜感激。谢谢 现在我的问题是,正如我在标题中所说的,我想在另一个方法中传递一个“方法名”作为参数。就像一张图片胜过千言万语一样,我的功能也有一大块:C# 将目标方法作为参数传递,c#,C#,首先,我的英语不是很好,所以如果你能客气一点,我将不胜感激。谢谢 现在我的问题是,正如我在标题中所说的,我想在另一个方法中传递一个“方法名”作为参数。就像一张图片胜过千言万语一样,我的功能也有一大块: public void RemoveDecimalPoints(TextBox txtBoxName, Func<string, TextBox> txtBoxMethod) { //Some Code txtBoxName.KeyPr
public void RemoveDecimalPoints(TextBox txtBoxName, Func<string, TextBox> txtBoxMethod)
{
//Some Code
txtBoxName.KeyPress += new KeyPressEventHandler(txtBoxMethod);
}
对不起,如果我不清楚一些,我缺乏一些词汇
谢谢您的帮助。假设您从包含
txtIncomeSelfValue1\u KeyPress
方法的同一类调用此RemoveDecimalPoints
方法,您可以按如下方式传递它:
RemoveDecimalPoints(someTextBox, this.txtIncomeSelfValue1_KeyPress);
RemoveDecimalPoints(txtBoxName, txtIncomeSelfValue1_KeyPress);
void RemoveDecimalPoints(TextBox txtBoxName, string txtBoxMethod)
但是您必须修改签名,因为Func
与txtIncomeSelfValue1\u按键法不匹配:
public void RemoveDecimalPoints(TextBox txtBoxName, KeyPressEventHandler txtBoxMethod)
{
//Some Code
txtBoxName.KeyPress += txtBoxMethod;
}
如果您乐于这样编写代码:
RemoveDecimalPoints(someTextBox, this.txtIncomeSelfValue1_KeyPress);
RemoveDecimalPoints(txtBoxName, txtIncomeSelfValue1_KeyPress);
void RemoveDecimalPoints(TextBox txtBoxName, string txtBoxMethod)
然后您可以使用:
public void RemoveDecimalPoints(
TextBox txtBoxName,
KeyPressEventHandler txtBoxMethod)
{
//Some Code
txtBoxName.KeyPress += txtBoxMethod;
}
如果要使用字符串
,则需要使用反射,并且签名需要如下所示:
RemoveDecimalPoints(someTextBox, this.txtIncomeSelfValue1_KeyPress);
RemoveDecimalPoints(txtBoxName, txtIncomeSelfValue1_KeyPress);
void RemoveDecimalPoints(TextBox txtBoxName, string txtBoxMethod)
不得不投你一票-你的答案(独立地)几乎和我的一模一样。:-)谢谢你的帮助!我用txtBoxName.KeyPress+=txtBoxMethod尝试了这个方法,但不是很好;我使用的是txtIncomeSelfValue1.KeyPress+=newkeypresseventhandler(txtBoxMethod);我差一点!哈哈^^