Problème pour accéder a une fonction d'une des forms

Résolu
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 - 30 juin 2012 à 15:25
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

3 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
30 juin 2012 à 16:14
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
3
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
30 juin 2012 à 20:05
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
3
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
1 juil. 2012 à 20:02
Je vous remercie a vous deux de m'avoir aider je vais faire sa voir si j'y arrive encore merci !
0
Rejoignez-nous