Problème pour accéder a une fonction d'une des forms [Résolu]

Messages postés
173
Date d'inscription
lundi 2 mai 2011
Statut
Membre
Dernière intervention
13 décembre 2012
- - Dernière réponse : tonyledragon
Messages postés
173
Date d'inscription
lundi 2 mai 2011
Statut
Membre
Dernière intervention
13 décembre 2012
- 1 juil. 2012 à 20:02
Bonjour,Voila je débute sur c# et j'aimerais avoir votre aide pour un problème que depuis quelque jours je n'arrive a résoudre le voici :

J'ai deux Form je l’appellerais A et B
Form A s'ouvre au lancement puis il connecte le client puis je clic sur mon bouton qui ouvre le form B .Je Remplie des information puis j'ai un bouton que si je clic faut envoyer les donnée problème en et aucune TCPClient existe sur B donc je voudrais faire comme mon ancien langage l'appeler via le form A c'est a dire A.MaFonction("tststt")
Le probleme en et a part faire un nouvelle instance du form A il mais impossible d'y acceder .
Pouvez vous m'aider a que le Form B puis acceder a une function du form A ?

Merci d'avance
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
14570
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
21 octobre 2019
136
3
Merci
Bonjour,

Lors de l'appel à la Form B, passes-lui l'instance de la form A :

MonB.ShowPerso(Me)

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de NHenry
Messages postés
13849
Date d'inscription
mardi 11 mars 2003
Statut
Non membre
Dernière intervention
22 octobre 2019
312
3
Merci
Bonsoir,

ayant eu ce genre de problèmes quand je suis passé de VB6 à C#, je vais développer un peu la réponse de NHenry.

L'utilisation de variables globales est déconseillée en C#, et donc les form n'en sont pas.
Une solution est effectivement de passer la référence de la form A en paramètre à la form B.

La méthode de NHenry est d'écrire une méthode ShowPerso avec FormA en paramètre dans laquelle tu affectes la référence à une variable locale à FormA:
//dans formB
FormA maFormA;
...


public void ShowPerso(FormA A)
{
     maFormA = A;
     this.Show();
}
....


//Dans formA

FormB B = new FormB;
B.ShowPerso(this);


Une deuxième méthode est de modifier le constructeur de FormB pour y passer le paramètre.

//dans formB
FormA maFormA;
...
public FormB(FormA A)
{
   maFormA = A;
}


//dans FormA
FormB B = new FormB(this);
B.Show();




Whismeril

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Whismeril
Messages postés
173
Date d'inscription
lundi 2 mai 2011
Statut
Membre
Dernière intervention
13 décembre 2012
1
0
Merci
Je vous remercie a vous deux de m'avoir aider je vais faire sa voir si j'y arrive encore merci !
Commenter la réponse de tonyledragon