2010-10-12 2 views
1

J'ai une interface graphique qui a derrière elle une interface qui permet à ces dll rencontrant son contrat de courir à travers cette interface graphique. Tout le travail et le calcul est fait dans chaque DLL.C# - Mise à jour du panneau sur l'interface utilisateur à partir de différentes DLL

Je veux afficher une mise à jour lorsque chaque enregistrement (dans la DLL) est traité, cette mise à jour doit être sur l'interface graphique.

Existe-t-il un moyen simple de transmettre cette information de la DLL, car ils ne savent pas quels contrôles sont sur l'interface graphique.

Merci.

Répondre

0

Vous pouvez utiliser une fonction de rappel qui permet aux bibliothèques dll d'informer votre interface graphique lorsque quelque chose change.

Par exemple, vous pouvez avoir un délégué comme celui-ci

delegate void NotifyChange(string action,string whatHasChanged); 

Ensuite, vous pouvez modifier les méthodes dans vos bibliothèques qui acceptent un délégué:

void Porcess(....,NotifyChange notifyChange) 
{ 
... 

} 

alors vous pouvez appeler la fonction de rappel dans votre dll à chaque fois que vous voulez signaler que quelque chose a changé:

... 
if(notifyChange!=null) 
notifyChange(thisAction,whatHappened); 
... 

et Vous pouvez avoir une implémentation pour ce délégué dans votre interface graphique pour le transmettre à vos méthodes. Au lieu d'utiliser un délégué, vous pouvez utiliser une interface.

+0

Merci, je suppose que cela devrait être dans la partie interface publique de la DLL? Comme mon GUI ne sait rien d'autre à part l'interface publique/contrat? –

+0

ce délégué ou cette interface devrait être là où vos bibliothèques et vos composants d'interface graphique peuvent y accéder. Il peut s'agir d'un membre public d'une bibliothèque commune – Beatles1692

Questions connexes