Atteindre les variables de la Form princale depuis une autre Form

Atteindre les variables de la Form princale depuis une autre Form - C#/.NET managed - Programmation

Marsh Posté le 27-06-2005 à 14:53:07    

Bonjour,  
 
Je travaille sur une application Windows codée en C#.
 
J'ai ma MainForm qui instantie une seconde form dans laquelle l'utilisateur saisi un paramètre.  
 
Cette seconde Form doit utiliser ce paramètre pour modifier un élément de la MainForm (juste avant le close).  
 
Soucis :  
je n'arrive pas à atteindre les variables membres ou les composants de ma MainForm  :??:  
 
Appel de la seconde Form depuis la MainForm :  

Code :
  1. F_NouvelleForm Form2 = new F_NouvelleForm(this);
  2. FormND.ShowDialog(this);


 
 
Dans la 2nde form :  
déclaration d'un owner membre de la classe  

Code :
  1. private System.Windows.Forms.Form owner;

 
 
 
qui est alimenté dans le constructeur  

Code :
  1. public F_NouvelleForm(System.Windows.Forms.Form p_MainForm)
  2. {
  3. owner = p_MainForm; 
  4. ...
  5. }


 
 
Mon problème est donc que je n'arrive pas à atteindre les variables membres ou les composants de ma MainForm  
 
Merci de votre aide

Reply

Marsh Posté le 27-06-2005 à 14:53:07   

Reply

Marsh Posté le 27-06-2005 à 14:57:44    

Je ne vois vraiment pas quel est le problème :
1) Un message d'erreur ? Un problème réel ?
2) Revois tes notions d'orienté objet, la question ne se pose même pas [:spamafote]

Reply

Marsh Posté le 27-06-2005 à 15:03:07    

Si j'expose le problème c'est qu'effectivement il y a un soucis.
 
Comme précisé plus haut dans ma seconde form j'alimente une variable owner de type System.Windows.Forms.Form avec l'instance de la première form (this) passée en paramètre du constructeur de ectte même seconde form.
 
Mon problème est le suivant :
sur cette variable owner je n'ai accès à aucune des propriétés ou varaibles de ma form principales.
 
S'il s'agit d'un problème de conception objet ou de méthode de développement pour ce genre de cas, je suis preneur pour tout conseil
 
Merci de votre aide !
 
 
 

Reply

Marsh Posté le 27-06-2005 à 15:05:13    

Ben logique, vu qu'elles sont private... Propriétés, mec, propriétés ;)

Reply

Marsh Posté le 27-06-2005 à 15:14:33    

j'ai positionné des variables en public pour test (comme variable memebre de ma Form principale) sans résultat non plus :
 
 
exemple :
public string _sProfil;
 
public string sProfil
{
 get { return _sProfil ; }
 set { _sProfil = value ; }
}

Reply

Marsh Posté le 27-06-2005 à 15:15:12    

Et ta propriété owner dans l'autre Form, c'est wak ?

Reply

Marsh Posté le 27-06-2005 à 15:26:09    

dans la form principale, je créé une instance de ma form secondaire en lui passant 'this' en paramètres.
 
le constructeur de la form secondaire prend un System.Windows.Forms.Form en paramètre.
 
Ce paramètre est utilisé dans ce même constructeur pour alimenté une variable membre de mon formulaire secondaire nommé owner et de type System.Windows.Forms.Form
 
Cette variable owner est private à la classe secondaire (la mettre en public ne change rien)
 
Et en fait lorsque je veux utiliser la variable owner je ne vois ni les contrôles de la form principale ni ses variables membres, m^mes celles qui sont déclarées en public
 
par contre, lorsque j'utilise le QuickWatch sur ma variable owner, en déployant l'arborescence des variables disponibles, j'ai bien entendu la même chose qu'avec la fenêtre d'auto-complétion mais j'ai aussi une section qui porte ce nom :  
 
- owner  
|_+ [MonNamespace.MainFrom]  
 
dans cette section j'ai tous les controles et variables de ma form principale mais je ne sais comment y accéder
 

Reply

Marsh Posté le 27-06-2005 à 15:35:00    

lordkoko a écrit :

Ce paramètre est utilisé dans ce même constructeur pour alimenté une variable membre de mon formulaire secondaire nommé owner et de type System.Windows.Forms.Form


Ah ben forcément. Faut soit changer le type, ou alors caster. Mais le mieux est changer de type...

Reply

Marsh Posté le 27-06-2005 à 15:45:27    

le paramètre this que j'utilise dans la form principale pour appeller mon formulaire secondaire est de type :
MonNamespace.MainFrom
 
et il est vrai que je recois du  
System.Windows.Forms.Form
dans la form secondaire
 
De quel variable ou paramètre faut il que je change le type pour pouvoir avoir accès aux variable de ma form principale depuis ma form secondaire ?
 
Merci de ton aide

Reply

Marsh Posté le 27-06-2005 à 15:46:26    

Ben déjà le paramètre dans ton constructeur, et aussi ta propriété owner

Reply

Marsh Posté le 27-06-2005 à 15:46:26   

Reply

Marsh Posté le 27-06-2005 à 15:55:59    

Comme quoi tout s'arrange.
 
merci de ton aide
 
J'ai modifié le type des données recues en paramètres dans la seconde form.
 
Ces paramètres ne devaient pas être de type System.Windows.Forms.Form  mais du même type que la form principale : MainForm
 
et j'ai donc accès à toutes mes variables...  
 
Merci encore  

Reply

Sujets relatifs:

Leave a Replay

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