我正在查看我的代码并重做我的所有活动,以便他们遵守this article但我遇到了问题。这是我的代码:
Script.cs
public EventHandler<ScriptEvent> Load;
protected virtual void OnLoad(string file)
{
EventHandler<ScriptEvent> handler = Load;
if(Load != null)
Load(this, new ScriptEvent(file));
}
和ScriptEvent:
ScriptEvents.cs
public class ScriptEvent : EventArgs
{
private string m_File;
public string File
{
get { return m_File; }
}
public ScriptEvent(string file)
{
this.m_File = file;
}
}
问题是我无法弄清楚如何制作它以便我的表单可以处理事件。例如,在Script.cs中加载一个文件,然后当调用Script.cs中的OnLoad(...)时,表单显示该文件。如果那令人困惑:
1)Script.cs加载文件并触发OnLoad(文件)
2)Form1选择OnLoad并做任何事情。
我认为这与我以前的方式类似(script.OnLoad + = script_OnLoad(...)),但我很难过。
答案 0 :(得分:1)
我想你可能想要:
script.Load += script_OnLoad;
这会将您的处理程序添加到事件中。然后,当调用OnLoad
方法时,它将调用您的处理程序。
您的script_OnLoad方法需要如下所示:
void script_OnLoad(object sender, ScriptEvent args)
{
// your code here - you can get the file name out of the args.File
}
您的Script.cs可以缩减为:
public EventHandler<ScriptEvent> Load;
protected virtual void OnLoad(string file)
{
if(Load != null)
Load(this, new ScriptEvent(file));
}