我有一个窗口表单,数据网格绑定到数据表.单击按钮,数据表将传递给静态类.
private void btnSave_ItemClick(object sender, EventArgs e)
{
MyStaticClass.SaveData(DataTable dt);
}
internal static class MyStaticClass
{
internal static void SaveData(DataTable dt)
{
foreach(DataRow dr in dt.rows)
{
// do something
}
}
}
Run Code Online (Sandbox Code Playgroud)
我需要将状态信息从SaveData方法传回我的表单,以便我可以通知用户如何处理记录.
比方说 - 我想每100条记录发送一条消息 - "处理记录#....",以便它显示在表格上.
是否可以从静态类中引发事件?
Fre*_*örk 10
是的,它是可能的,就像非静态类中的事件一样(除了你当然需要用as声明事件static).
请注意,通过这种设计,您可以(至少在理论上)有几个形式SaveData同时调用,因此该方法的一个实例是针对表单A提出事件,而另一个实例将提升针对表单B的事件.如果是静态的,则所有事件都将被两个表单捕获,因此您可能希望在表单可用于确定事件的特定调用是否有意义的事件中包含信息.
例如,您可以将自定义的EventArgs类放在一起并传入DataTable,以便侦听代码可以查看它是否是该表单中的DataTable.如果是,则UI将被更新,如果不是,则可以简单地忽略该调用.
是的,您可以从静态类中引发事件。将事件定义为静态。
public static event EventHandler MyEvent;
Run Code Online (Sandbox Code Playgroud)