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

Windows Forms Discussion :

Executer une methode dans un autre form


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Par défaut Executer une methode dans un autre form
    Bonjour a tous, desole de ne pas mettre les accents, j'ai un clavier qwerty.

    Voici mon probleme : quand je lance l'application Windows, un form "session" style popup en topmost s'ouvre demandant un login. Une fois le login entre, on clique sur OK.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void Button1Click(object sender, EventArgs e)
    {
    	Connection(Convert.ToInt32(textBox1.Text)); //le login est un int. La methode Connection() ouvre la session dans la bdd mysql
    	Welcome welc = new Welcome();
    	welc.updateinfo(); //je veux executer cette methode dans le form welcome
    	this.Close(); //fermeture de ma popup
    }
    La methode updateinfo() va chercher des infos supplementaires dans la bdd grace au login rentre et affiche tout ca dans des labels.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void updateinfo()
    {
    	string[] user = new string[3]; //tableau rempli par la fonction mysql_select()
    	mysql_select("SELECT ..........", user);
    	techop.Text = user[1];
    	labhost.Text = user[0];
    	labcon.Text = user[2];[/INDENT]
    }
    En faisant un point d'arret a l'execution de la methode welc.updateinfo() le programme s'arrete bien a cette ligne, mais ensuite les labels de mon form welcome ne sont pas remplis.

    J'ai alors insere un bouton dans welcome :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void Button1Click(object sender, EventArgs e)
    {
    	updateinfo();
    }
    et ca fonctionne tres bien.

    Serait-ce un probleme du style, il execute la methode welc.updateinfo() mais dans le form session ?

    PS : mon form welcome est un MDIChild du form frmMain.

    Merci de m'avoir lu jusqu'au bout. C'est mon premier post mais surement pas le dernier

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Par défaut
    Salut pyannick03,

    j'ai pas tout à fait compris ce que tu comptai faire mais j'ai une application qui ressemble vaguement à tes descriptions
    (une fenêtre de login qui ouvre telle ou telle page suivant le niveau d'habilitation du compte).

    Un moyen simple pour agir sur une form_a tout en ayant le focus sur une form_b est d'avoir un paramètre from dans le constructeur de ta form_b.
    Donc quand tu crée ta form_b à partir de ta form_a tu lui passe le paramètre this.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class form_a
    {
     
        fonction()
        {
           form_b fenetre = new form_b(this) ;
           fenetre.showDialog() ;
         }
    }
    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
     
    class from_b
    {
         Form fenetre ;
         constructeur(Object f)
         {
            fenetre = (Form)f ;
         }
     
         UneFonction()
         {
             //la tu agit sur un composant de ta fenêtre non active
             fenetre.label1.text = " du texte" ;
            // la tu agit sur un composant de ta fenêtre active
             this.label1.texte = "du texte" ;
         }
    }
    Est-ce que cela répond à ta question ? Sinon jme suis emmêlé les pinceaux pendant la lecture.

  3. #3
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Par défaut
    Merci de ta reponse mais je ne crois pas que tu ais vraiment repondu a ma question, mais je vais reetudier ca quand meme demain.

    Pour simplifier, j'ai un form "session" qui va modifier la bdd puis ordonner un autre form "welcome" de se rafraichir, sachant que la methode qui rafraichit se trouve sur le form "welcome".

    Voila le form session
    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 partial class Session : Form
    {
    	public Session()
    	{
    		InitializeComponent();
    	}
     
    	void Button1Click(object sender, EventArgs e)
    	{
    		Welcome welc = new Welcome();
    		welc.updateinfo();
    		this.Close();
    	}
    }
    Voila le form welcome
    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
     
    public partial class Welcome : Form
    {
    	public Welcome()
    	{
    		InitializeComponent();
    		updateinfo();
    	}
     
    	public void updateinfo()
    	{
    		string[] user = new string[3];
    		mysql_select("SELECT .......", user); //methode qui insere les resultats de la requete dans le tableau
    		label1.Text = user[0];
    		label2.Text = user[1];
    		label3.Text = user[2];
    	}
    }
    Mes labels ne se remplissent pas, et je n'ai absolument aucune erreur, en effet quand j'execute la methode updateinfo() grace a un bouton place sur le form welcome, ca fonctionne tres bien.

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Par défaut
    Mais en fait c'est tout à fait ce que je t'ai dit.
    quand tu entre dans cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	void Button1Click(object sender, EventArgs e)
    	{
    		Welcome welc = new Welcome();
    		welc.updateinfo();
    		this.Close();
    	}
    En fait là tu crée un nouveau form.
    Question : Au moment au tu appuie sur le bouton qui passe dans cette fonction, ton form welcom est-il déjà ouvert ? on l'appellera welcom_a
    Si oui : tu crée à cet instant un nouveau form (welcom_b) qui ne s'affiche pas et il est normal que welcom_a existant ne se mette pas à jour car tu exécute updateinfo() du welcom_b.
    Tu n'a pas le bon objet form voila tout.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	void Button1Click(object sender, EventArgs e)
    	{
    		Welcome welc = new Welcome();
    		welc.updateinfo();
                     wel.showDialog() ;
    		this.Close();
    	}
    Tu verras que ce form se met à jour ^^ c'est juste que tu as deux form.

  5. #5
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Par défaut
    Yes !

    C'est bon tu avais bien repondu a mon probleme c'est juste qu'hier soir je captais plus rien.

    Merci beaucoup !

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Par défaut
    Mais de rien. Bonne continuation !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment appeler une methode dans une autre Form
    Par moonshine972 dans le forum C#
    Réponses: 20
    Dernier message: 29/03/2011, 11h38
  2. comment avoir une valeur d'une form1 dans un autre form
    Par sabrina_beautyful dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/05/2009, 14h53
  3. Executer une methode d'un autre controlleur
    Par Javix dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 08/12/2008, 17h03
  4. Executer une macro dans un autre classeur
    Par nautygirl dans le forum Général VBA
    Réponses: 2
    Dernier message: 30/07/2007, 15h34
  5. [VB6]Passer une varible dans un autre form
    Par mike292 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 25/04/2006, 16h12

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