IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Accès au formulaire ouvert depuis une classe


Sujet :

C#

  1. #21
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Citation Envoyé par mr.net
    ta deja essaye ca
    puiske c'est un string de tableau qui sort
    Tonformat XXX[20]= clsMaClasse.Resulalrequete(par1,par2,par3);
    textbox4.text = XXX[1];
    textbox5.text = XXX[2];
    ...
    textbox25.text = XXX[21];
    je penserai a ca moi .
    C'est ce que je ferai... dès que je pourrai modifier mes textbox depuis le fichier de classe

  2. #22
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    je n'arrive pas à étendre sa portée à la classe
    Qu'est-ce que ça veut dire ?


    Envoie la structure globale de tes classes, pour voir...

  3. #23
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    C'est à dire que je ne le "vois" pas dans la classe, alors que je le "vois" dans le code du formulaire principal.

    Pas de problème pour envoyer la structure... mais je fais comment ?
    (Visual Studio 2003 si c'est spécifique)

    Au cas où ça ne se verrait pas... je fais du C# depuis 3 semaines...

  4. #24
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    C'est à dire que je ne le "vois" pas dans la classe, alors que je le "vois" dans le code du formulaire principal.
    ... hummm... je vois
    ou pas
    Quand tu dis "la classe", c'est ta classe de calcul ? donc tu "vois" le texte des TextBox de ton formulaire secondaire de puis le formulaire principal mais pas depuis la classe clsAffaire ?
    Dans ton formulaire principal tu fais "formAffaire.textBox1.Text = valeur1;" et ça marche ? les TextBox ne sont donc pas private ? (c'est possible mais ce n'est pas ce qui est proposé dans la génération automatique de code par VisualStudio !)


    Pas de problème pour envoyer la structure... mais je fais comment ?
    Bah tu copies-colles ton code en ne gardant que les trucs utiles


    J'ai pensé à quelque chose qui te pose peut-être problème, ou peut-être pas, je ne sais pas :
    En fait, quand tu appelles ta fonction de la classe clsAffaire, tu "perds" ta variable formAffaire donc tu ne sais plus comment faire référence à ton formulaire ?
    Dans ce cas, deux possiblités :
    - si clsAffaire est une classe qui s'instancie et qui ne "correspond" qu'à un formulaire : lier une instance de clsAffaire à une instance de frmAffaire, à l'aide d'un champ privé qui est initialisé dans un constructeur qui prendra formAffaire en argument
    - sinon, méthode générale qui marchera tout le temps : passer formAffaire en argument dans ta fonction de "récupération des données et remplissage du formulaire"
    (je sens que je ne suis pas claire...)

  5. #25
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut
    Salut,

    je n'arrive pas à atteindre le formulaire ouvert. Il est là... mais je ne sais pas où il est caché.
    je pense qu'il faut que tu passe une instance de ton formulaire à la classe clsAffaire

  6. #26
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut
    et il doit quand même falloir faire des propriétés publiques pour les champs formAffaire.textBoxX.Text

    parce que les textBox doivent être private

  7. #27
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Citation Envoyé par Astartee
    Dans ton formulaire principal tu fais "formAffaire.textBox1.Text = valeur1;" et ça marche ? les TextBox ne sont donc pas private ? (c'est possible mais ce n'est pas ce qui est proposé dans la génération automatique de code par VisualStudio !)
    Oui !
    C'est possible parce que j'ai modifié les private en public.


    Bah tu copies-colles ton code en ne gardant que les trucs utiles
    OK. C'est en fichier joint. J'espère ne pas avoir trop résumé...

    (je sens que je ne suis pas claire...)
    Tu l'es sûrement... mais pas à mon petit niveau...

  8. #28
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Citation Envoyé par melleb
    et il doit quand même falloir faire des propriétés publiques pour les champs formAffaire.textBoxX.Text

    parce que les textBox doivent être private
    Non, pour être tranquille, j'ai passé le TextBox entier en public...
    C'est un peu trop bourrin ?

  9. #29
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut
    Je me répète, mais je pense bien qu'il faille que tu passes une instance de frmAffaire à ta clsAffaire...
    sinon, je ne vois pas comment clsAffaire peut voir l'instance de ta frmAffaire...

    je mettrai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		public void AppelBase(string v_naff, string v_ctyp_aff, frmAffaire form)
    		{
    			// là, tu vas pouvoir modifier les attributs de ta formAffaire
    			form.TextBox1.Text = "trucmuche";
    		}
    et dans ta frmAffaire,
    car c'est dedans je suppose que tu appelles AppelBase(), tu vas faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // c'est la méthode de ton bouton 'AppelBase'
    public buttonAppelBase_Click(object o, sender s)
    {
        //...
        clsAffaire.AppelBase(v_naff, v_ctyp_aff, this);
    }
    moi, c'est comme ça que je vois les choses...

    mais peut être que je suis complètement à coté de la plaque (comme j'ai pas pris la discussion dès le début...)

  10. #30
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    ... donc dans clsAffaire, à aucun endroit il n'y a de référence à une quelconque frmAffaire ?

    Je pense que ça correspond à ce que je proposais dans mon dernier message :

    1/ tu peux lier une instance de clsAffaire à ton formulaire formAffaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    public class clsAffaire
    {
    	private frmAffaire formAffaire;
     
    	public clsAffaire(frmAffaire formAffaire)
    	{
    		this.formAffaire = formAffaire;
    	}
     
    	public void AppelBase(string v_naff, string v_ctyp_aff)
    	{
    		// requête dans la base
    		...
    		// et la modification des textbox
    		formAffaire.txtbox = ... ;
    	}
    }
     
    // et au moment où tu définis ton instance de clsAffaire :
    clsAffaire maClasseAffaire = new clsAffaire(formAffaire); // si c'est dans le frmPrincipal
    clsAffaire maClasseAffaire = new clsAffaire(this); // si c'est dans frmAffaire
    2/ tu peux indiquer en argument de ta fonction le formulaire que tu veux mettre à jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public class clsAffaire
    {	
    	public void AppelBase(string v_naff, string v_ctyp_aff, frmAffaire formAffaire)
    	{
    		// requête dans la base
    		...
    		// et la modification des textbox
    		formAffaire.txtbox = ... ;
    	}
    }
     
    // et au moment où tu appelles la fonction AppelBase :
    maClasseAffaire.AppelBase(vNaff, vCtypAff, formAffaire); // si c'est dans le frmPrincipal
    maClasseAffaire.AppelBase(vNaff, vCtypAff, this); // si c'est dans frmAffaire


    Et en effet il vaut mieux laisser les TextBox privés et utiliser des propriétés pour y accéder :
    - parce que une partie du code est sans doute générée par ton framework, que c'est cette partie qui délare les TextBox en private, et que le code généré il ne vaut mieux pas y toucher
    - parce que c'est l'esprit C# : les propriétés ont été spécialement intégrées dans la syntaxe de ce langage pour gérer les accès aux variables, ce n'est pas pour ne pas les utiliser

  11. #31
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut
    Citation Envoyé par Astartee
    ... donc dans clsAffaire, à aucun endroit il n'y a de référence à une quelconque frmAffaire ?
    c'est bien ce que je disais...

  12. #32
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Citation Envoyé par Astartee
    ... donc dans clsAffaire, à aucun endroit il n'y a de référence à une quelconque frmAffaire ?
    MMmh, si...
    Mais comme ça ne fonctionne pas encore, le code n'est pas écrit.

    Je compte l'utiliser dans le public void AppelBase(){}

    Enfin... je vais regarder ce qur vous m'avez proposé bien tranquillement, et je reviens vous dire ce qu'il en est (peut-être demain).

    Je repasse aussi mes textbox en private et je regarde les propriétés dont tu parles.

    En tout cas : merci à tous !

    EDIT :
    en fait, ça a été plus vite que je croyais : ça marche tout seul !

    Sinon, pour info : pour ce qui est d'utiliser les propriétés, j'ai passé le champ "Modifiers" de private à public... et ça a modifié le code du concepteur directement.
    Donc en fait, c'est pareil que ce que j'avais fait (pour une fois que je ne fais pas une bêtise !)

    Merci encore !

  13. #33
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    ça a été plus vite que je croyais : ça marche tout seul !
    Bah évidemment que ça marche
    je rigoooole


    Tant de messages pour un si petit problème Le plus dur aura été de comprendre ce qui n'allait pas... Il est vrai que parfois je suis dure d'oreille mais là je crois que tu n'as pas très bien présenté les choses non plus ! :p

    Morale de l'histoire :
    si tu veux, depuis une classe (ici clsAffaire), faire référence à une instance d'une autre classe (ici l'instance formAffaire de la classe frmAffaire), il faut à un moment ou à un autre donner cette instance à la première classe : en propriété, en paramètre d'un constructeur, en paramètre d'une méthode... peu importe mais autrement la première classe ne poura pas deviner toute seule quel est l'objet à utiliser !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [JBoss Portal] Acces à la Session Portail depuis une classe Java
    Par thom44 dans le forum Portails
    Réponses: 0
    Dernier message: 02/10/2008, 16h09
  2. Accès au fichier ressources depuis une classe action
    Par root76 dans le forum Struts 1
    Réponses: 2
    Dernier message: 21/11/2006, 07h36
  3. [EJB2] Accès Interface locale depuis une classe métier.
    Par rigor dans le forum Java EE
    Réponses: 2
    Dernier message: 10/10/2006, 14h44
  4. acces a uneressource bitmap depuis une classe
    Par firejocker dans le forum MFC
    Réponses: 9
    Dernier message: 03/02/2006, 21h48
  5. Acces a un control depuis une autre classe
    Par schnito dans le forum MFC
    Réponses: 5
    Dernier message: 25/01/2004, 22h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo