Une instance de classe métier pour plusieurs forms

Une instance de classe métier pour plusieurs forms - C#/.NET managed - Programmation

Marsh Posté le 25-11-2009 à 16:55:32    

Bonjour,
 
Je débute en c# et je suis confronté à un problème.
Je suis en train de créer un programme composé de 2 fenêtres et d'une classe métier.
Un évènement sur l'une ou l'autre des fenêtres entraine un traitement sur la classe métier.
Ma question; comment faire pour que les 2 forms travaillent sur la même classe métier ?
 
Merci d'avance  :jap:

Reply

Marsh Posté le 25-11-2009 à 16:55:32   

Reply

Marsh Posté le 25-11-2009 à 17:10:50    

Tu instancies une classe métier dans ta Form principale, que tu rends accessible à l'autre Form via un accesseur (get/set)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-11-2009 à 17:21:20    

D'accord mais concrètement comment y accéder depuis l'autre Form ?
Parce que la classe instanciée dans la Form principale n'existe pas dans le contexte de l'autre fenêtre, et je n'ai donc pas accès à ses accesseurs.

Reply

Marsh Posté le 25-11-2009 à 17:55:48    

quand tu appelles ta form secondaire, tu lui passes en paramètre la form qui a instancié la classe métier, tu pourras ainsi avoir accés à ses propriétés :

 
Code :
  1. public class Form1
  2. {
  3.   Job myJob; // cet objet représente ta classe métier
  4.  
  5.   public Form1()
  6.   {
  7.      myJob = new Job();
  8.   }
  9.  
  10.   public Job
  11.   {
  12.      get { return myJob; }
  13.   }
  14.  
  15.   private void DoWhatever()
  16.   {
  17.      Form2 frm = new Form2(this); // tu instancies une Form2 en lui passant la Form courante en paramètre
  18.      myJob.Fonction1();
  19.      frm.DoWork();
  20.   }
  21. }
  22.  
  23. public class Form2
  24. {
  25.   Job myJob;
  26.  
  27.   public Form2(Form1 form)
  28.   {
  29.      myJob = form.Job; // tu récupères le job de Form1
  30.   }
  31.  
  32.   private void DoWhatever()
  33.   {
  34.      myJob.Fonction1();
  35.      myJob.Fonction2();
  36.      // etc
  37.   }
  38.  
  39.   public void DoWork()
  40.   {
  41.      MessageBox.Show("Kikoo lol ! asv ? " );
  42.   }
  43. }
 

edit: si tu utilises C# 3.0, tu peux utiliser les accesseurs simplifiés.
edit2 : rajout de code pour instancier la Form2


Message édité par Harkonnen le 25-11-2009 à 18:13:22

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-11-2009 à 18:38:45    

Ça marche, merci :)


Message édité par darkgloom le 25-11-2009 à 18:54:46
Reply

Sujets relatifs:

Leave a Replay

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