将信息从班级返回到表格[C#]

时间:2009-08-13 21:24:12

标签: c# events

我目前正在尝试将我的一些代码与我的主窗体分开,并创建类文件来处理某些操作。我已经读到将类绑定到UI并不是一个好习惯,所以我想知道如何仍然返回有关课堂上发生的事件进展的信息。当代码出现在主窗体中时,我会将函数的状态更新写入文本框,以便用户可以知道发生了什么。

如何通过主窗体从类中更新用户的例程状态?

2 个答案:

答案 0 :(得分:8)

class Foo
{
    public event EventHandler DidSomething = delegate { };

    public void DoSomething( )
    {
        // do stuff, fire event
        OnDidSomething( EventArgs.Empty );
    }

    protected virtual void OnDidSomething( EventArgs e )
    {
        DidSomething( this, e );
    }
}

主表单可以订阅“DidSomething”事件并根据需要采取措施。

public class Form1 : Form
{ 
    public Form1( )
    {
        Foo f = new Foo( )
        f.DidSomething += f_DidSomething;
        f.DoSomething( );
    }


    void f_DidSomething( object sender, EventArgs e )
    {
        MessageBox.Show( "Event Fired" );
    }
}

答案 1 :(得分:0)

您可以在工人类上定义“StatusChanged”事件。然后,UI类可以注册该事件,并采取所需的任何操作来通知用户。