如何在表格上回应课堂中触发的事件?

时间:2013-12-13 04:47:03

标签: c# events eventargs

我正在查看我的代码并重做我的所有活动,以便他们遵守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(...)),但我很难过。

1 个答案:

答案 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));
}