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

Signaler
Messages postés
173
Date d'inscription
lundi 2 mai 2011
Statut
Membre
Dernière intervention
13 décembre 2012
-
Messages postés
173
Date d'inscription
lundi 2 mai 2011
Statut
Membre
Dernière intervention
13 décembre 2012
-
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

3 réponses

Messages postés
14723
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
17 septembre 2020
144
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
Messages postés
14758
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 septembre 2020
433
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
Messages postés
173
Date d'inscription
lundi 2 mai 2011
Statut
Membre
Dernière intervention
13 décembre 2012
1
Je vous remercie a vous deux de m'avoir aider je vais faire sa voir si j'y arrive encore merci !