Variable de form à form ?

Variable de form à form ? - C#/.NET managed - Programmation

Marsh Posté le 21-12-2004 à 09:35:10    

Voilà mon problème de la journée :
 
J'ai un form qui traite des variables ! (form1) et depuis ce form1 j'ouvre un autre form ! qui doit utiliser les valeurs de ces variables.. mais bien entendu dans le form2 elle n'existe pas ! comment faire pour passer mes paramètres de form à form ?

Reply

Marsh Posté le 21-12-2004 à 09:35:10   

Reply

Marsh Posté le 21-12-2004 à 09:40:57    

Utilise des propriétés.

Reply

Marsh Posté le 21-12-2004 à 09:44:32    

Propriétés ?
 
 
J'ai du mal à comprendre ?  
Un exemple simple sera le bien venu !!

Reply

Marsh Posté le 21-12-2004 à 09:46:24    

utilise des accesseurs get/set et des variables private:
ex dans la Form1 :

Code :
  1. class Form1
  2. {
  3.    private int _a;
  4.  
  5.    public int a
  6.    {
  7.       get
  8.       {
  9.          return _a;
  10.       }
  11.       set
  12.       {
  13.          _a = value;
  14.       }
  15.    }
  16.    (..méthodes...)
  17. }


et dans Form2 :

Code :
  1. class Form2
  2. {
  3.    public static void Main()
  4.    {
  5.       myForm fm = new Form1();
  6.       fm.a = 69;
  7.       int toto = fm.a
  8.       Console.WriteLine(toto); / affiche 69
  9.    }
  10. }

Reply

Marsh Posté le 21-12-2004 à 09:51:18    

Genre tu définies une propriétés dans ton Form2 (j'espère que tu connais les propriétés, hein ;) ). Et puis quand tu instancie ton Form2 à partir de ton Form1, tu met la valeur qui va bien dans ton form2.
 
Exemple en VB.NET (pas beaucoup de changements avec C#) :
 

Code :
  1. Class Form2
  2.   Inherits System.Windows.Forms.Form
  3.   Private _ValeurAFiler As Integer
  4.   Public Property ValeurAFiler() As Integer
  5.     Get
  6.       Return Me._ValeurAFiler
  7.     End Get
  8.     Set(Byval Value As Integer)
  9.       Me._ValeurAFiler = Value
  10.     End Set
  11. End Property
  12. [... Reste de la classe ...]
  13. End Class


 
Ensuite dans ton form1, là où tu veux ouvrir le form2 :
 

Code :
  1. Dim F2 as New Form2()
  2. F2.ValeurAFiler = XXX


 
Avec XXX ce que tu veux donner.
 
 
Une autre possibilitée est de mettre un autre constructeur à Form2 qui prend les bon paramètres, donc tu rajoutes genre ça dans ton Form2
 

Code :
  1. Public Sub New(Byval ValeurAFiler As Integer)
  2.  
  3.   MyBase.New()
  4.   Me.InitializeComponent()  ' Ca c'est pour le form designer
  5.   Me._ValeurAFiler = ValeurAFiler
  6. End Sub


 
Avec bien-sûr une variable membre qui s'appelle _ValeurAFiler
 
EDIT : Grilled By Harkonnen... J'aurais pas dû taper tout à la main dans la case "Réponse rapide" :D


Message édité par FlorentG le 21-12-2004 à 09:51:59
Reply

Marsh Posté le 21-12-2004 à 10:11:13    

Merci à vous 2 !!  
Ca marche tip top !

Reply

Marsh Posté le 21-12-2004 à 12:52:06    

Form1

Code :
  1. public struct f_axe
  2. {
  3.   public int v_axe_X;
  4.   public int v_axe_Y;
  5.   public int v_ID;
  6. }
  7. public f_axe[] axe_point = new f_axe[1000];


Par exemple la valeur de axe_point[3].v_axe_X et de 123 dans le Form1
 
Form2

Code :
  1. WinForm imp_variable = new WinForm();


 

Code :
  1. imp_variable.axe_point[3].v_axe_X;


 
Mais si je la passe dans le Form2 elle vaut 0.. pourquoi ?? comment faire pour garder les valeurs ?

Reply

Marsh Posté le 21-12-2004 à 15:49:53    

personne peut m'aider ?

Reply

Marsh Posté le 21-12-2004 à 15:56:08    

Déjà, les variables membres publiques, cai mal  :o

Reply

Marsh Posté le 21-12-2004 à 16:00:26    

Sinon a la compilation il y a des problèmes si je les mets pas en public, je demande qu'à me faire aider ! je suis là pour ça


Message édité par bleup le 21-12-2004 à 16:01:15
Reply

Marsh Posté le 21-12-2004 à 16:00:26   

Reply

Marsh Posté le 21-12-2004 à 16:01:53    

Utilise des propriétés, regarde dans l'exemple d'Harko

Reply

Marsh Posté le 21-12-2004 à 16:06:13    

avec les  
 

Code :
  1. get
  2.       {
  3.          return _a;
  4.       }
  5.       set
  6.       {
  7.          _a = value;
  8.       }


 
Je comprends pas trop comment ca marche ?? ca fait quoi exactement ce bout de code ?

Reply

Marsh Posté le 21-12-2004 à 16:07:01    

A faire une propriété. Regarde dans la MSDN à quoi ça sert. C'est un truc ultra important !

Reply

Marsh Posté le 23-12-2004 à 14:36:17    

Je déclare ma fonction avec un tableau en 1000 cases dans mon 1er form:
 
 
public struct f_axe
{
public int v_axe_X;
public int v_axe_Y;
public int v_ID;
}
public f_axe[] axe_point = new f_axe[1000];
 
J'y mets mes valeurs:
 
axe_point[v_ind].v_axe_X=panel_Dessin.PointToClient(Cursor.Position).X;
axe_point[v_ind].v_axe_Y=panel_Dessin.PointToClient(Cursor.Position).Y;
axe_point[v_ind].v_ID=v_ind;
v_ind++;
 
 
 
J'appele mon 2ème form
 
n_preview myForm = new n_preview();
myForm.Show();
 
 
Dans mon 2ème forme pour avoir accès au variable du 1er form je tape:
WinForm imp_variable = new WinForm();
 
et j'appele mes variables:
 
imp_variable.axe_point[i].v_axe_X; //bon ici c'est un exemple pour l'appler
 
 
Donc mon problème est quand j'utilise mes variables dans le 2ème form elles sont à 0, mais quand je les lient sur le 1er form elles sont OK. Comment faire pour que le transfère de variables soit correct pour que la valeur ne s'efface pas entre le form1 et le form2 ??
 
 
Pour get, set dans un structure ca va pas..
auriez-vous une solution pour mon code source ?

Reply

Marsh Posté le 23-12-2004 à 19:32:23    

J'ai trouvé, sans les GET, SET  avec ma structure ca marchait pas !
 
Merci quand même pour vos aides,
 
Joyeux Noel

Reply

Sujets relatifs:

Leave a Replay

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