2009-08-13 3 views
0

現在、私のコードの一部を私のメインフォームから分離し、クラスファイルを作成していくつかの操作を処理しようとしています。私はクラスをUIに結びつけるのは良い習慣ではないことを読んだので、クラスで行われているイベントの進行に関する情報をどのように返すのかと思っていました。コードがメインフォームに存在するとき、ユーザーが何が起こっていたのかを知るために、関数のステータス更新をテキストボックスに書きます。クラスからフォームに情報を戻す[C#]

メインフォーム経由でクラスからルーチンのステータスを更新するにはどうすればよいですか?

答えて

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"); 
    } 
} 
0

ワーカークラスに「StatusChanged」イベントを定義できます。その後、UIクラスはそのイベントに登録し、ユーザーに通知するために必要なアクションを実行できます。

関連する問題