我有一个事件处理程序,我想将一些参数传递给事件
像这样,该行触发错误:需要方法名称
p.Click += new System.EventHandler(P_Click(sender, new MyEventArgs { design = reader1["desig_prd"].ToString(), prix = (float)reader1["prix_prd"] }));
我的 P_Click 事件
public void P_Click(Object sender, EventArgs e)
{
var args = (MyEventArgs)e;
string deignation = args.design;
MessageBox.Show(deignation);
}
我有这样的 MyEventArgs 类
class MyEventArgs : EventArgs
{
public string design { get; set; }
public float prix { get; set; }
}
有什么帮助吗?
提前致谢
当您订阅事件处理程序时,您不能将参数传递给您的方法。您应该只指定方法名称:
p.Click += new EventHandler(P_Click);
或者简短的表示法:
p.Click += P_Click;
如果您想手动触发此操作并传递一些参数,那么您应该使用该参数调用您的方法:
P_Click(this, new MyEventArgs { design = reader1["desig_prd"].ToString(),
prix = (float)reader1["prix_prd"]
});
但这通常是一个不好的做法(手动触发事件处理程序方法)。而是使用PerformClick订阅事件处理程序后的方法,当然为您的参数创建另一个方法,然后从P_Click
:
p.PerformClick();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)