Accès d'objet du Main à partir d'une classe

Accès d'objet du Main à partir d'une classe - C#/.NET managed - Programmation

Marsh Posté le 09-08-2005 à 17:56:05    

Je m'explique.
 
Je suis entrain de créer un logiciel spécifique pour redimensionner les images + upload de ces dernières.
Redimenssionnement nikel, upload nikel sauf... l'affichage du nombre d'octects en cours d'upload.
 
Problème :
J'ai un objet LabelUpload sur le Main (contenu dans Main.cs cad mon interface)
J'ai une class UploadFtp (contenu dans UploadFtp.cs)
 
dans cette classe il y a la fonction Upload() qui contient une boucle pour l'upload qui est la suivante :
 

Code :
  1. while ((bytes = input.Read(buffer, 0, buffer.Length)) > 0)
  2. {
  3. cSocket.Send(buffer, bytes, 0);
  4. }


 
Et j'aimerai changer dans cette boucle la valeur de Label.Upload.Text contenu dans Main...
 
Choses déjà essayées :
- J'ai essayé déclaré un objet bla de la class Main dans la class FtpUpload (Main bla = new Main() + LabelUpload en public) : erreur lors de la compilation lors de la définition de l'objet FtpUpload dans le main (aucunes précisions)
 
- J'ai mis cet objet directement dans la fonction upload() : plus d'erreur mais rien ne s'affiche  :fou:  
 
Je pense que c'est un peu barbare de créer un objet "bla" de Main... quelqu'un a t'il une solution pour accéder à un objet du Main a partir d'une classe ?

Reply

Marsh Posté le 09-08-2005 à 17:56:05   

Reply

Marsh Posté le 12-08-2005 à 18:13:16    

plusieurs solution possibles:
 
premiere, efficace, mais pas tres propre:
 
tu passe la ref du formulaire principal dans le constructeur de ta classe, tu l'attribue à une propriété de ta classe, tu declare ton label en public dans ton formulaire et tu accede au label dans ta boucle par un  
 

Code :
  1. formpassee.labelUpload.text = [ta valeur]


 
L'autre solution, plus classe  :sol: (evident pour un langage objet   [:gui42] )
 
Tu crée un evennement dans ta classe UploadFtp puis un delegué, dans ta classe Main.cs, lorsque tu instancie ton objet de UploadFtp , tu ajoute au eventhandler le gestionnaire que tu veux utiliser pour mettre à jour ton label et le tour est joué ;)
 
Regarde donc dans la doc MSDN pour bien comprendre ce concept d'evennement/delegué qui est TRES puissant en C# :)

Reply

Marsh Posté le 13-08-2005 à 23:30:49    

Ouaw, Evenements / délégués  :pt1cable:  
 
J'avai jamais entendu parlé de ça, très intéressant effectivement, bien qu'un peu compliqué au début ;)
 
Après 1h de théorie j'ai enfin réussi, merci pour la piste :jap:  
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed