我正在尝试从表单的按钮单击事件中调用共享的全局事件处理程序。
public void button21_Click(object me, EventArgs MyArgs) {
button17_Click(me, MyArgs); /// WORKS!
}
我想要做的是将我的XML传递给方法。
类似的东西:
public void button21_Click(object me, EventArgs MyArgs) {
button17_Click(me, MyArgs, MyXmlString); /// ERROR!
}
只有在按下button21时,我才会在button17_Click()方法中始终需要XML。
我该怎么做?
答案 0 :(得分:4)
您不会将XML(或其他任意数据类型)传递给.NET中的事件处理程序。他们有一个特殊的签名,这就是你必须使用的。
你不应该从button21_click调用button17_click。相反,试试这个:
public void button17_Click(object sender, EventArgs e)
{
CommonFunctionality();
}
public void button21_Click(object sender, EventArgs e)
{
CommonFunctionality();
}
private void CommonFunctionality()
{
// In here, place the code that used to be in button17_click
}
然后,您可能需要创建可以使用XML的常用功能版本。
答案 1 :(得分:3)
我不会尝试直接调用您的事件处理程序,将其留给事件本身。
您应该做的是将button17
的逻辑移到单独的方法中,然后调用该方法。
private void button17_Click(object sender, EventArgs e)
{
// call the newly created method instead (with the XML argument null)
HandleClickOperation(null);
}
private void button21_Click(object sender, EventArgs e)
{
// call the newly created method instead (with the XML argument set)
HandleClickOperation(MyXmlString);
}
private void HandleClickOperation(string xmlString)
{
if (xmlString == null)
{
// do things unique to button17 behavior
}
else
{
// do things unique to button21 behavior
}
// the logic that was in button17_Click()
}
答案 2 :(得分:2)
好的,这个问题比昨天好一点,我们仍然看不到:
所有这一切都需要形成答案或建议。