2009-08-13 5 views
0

J'essaie actuellement de séparer une partie de mon code de mon formulaire principal et de créer des fichiers de classe pour gérer certaines opérations. J'ai lu que ce n'est pas une bonne pratique de lier les cours à une interface utilisateur, alors je me demandais comment retourner des informations sur la progression des événements qui se déroulent dans la classe. Lorsque le code était présent dans le formulaire principal, j'écrivais les mises à jour de statut de la fonction dans une zone de texte, afin que l'utilisateur puisse savoir ce qui se passait.Retour des informations d'une classe au formulaire [C#]

Comment procéder pour mettre à jour l'état d'une routine d'une classe via le formulaire principal?

Répondre

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

La forme principale peut s'abonner à l'événement "DidSomething" et prendre les mesures nécessaires.

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

Vous pouvez définir un événement "StatusChanged" sur votre classe de travail. La classe d'interface utilisateur peut alors s'enregistrer pour cet événement et prendre les mesures nécessaires pour informer l'utilisateur.

Questions connexes