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 :

Exécuter méthode à partir d'un autre form [Débutant]


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 166
    Points : 84
    Points
    84
    Par défaut Exécuter méthode à partir d'un autre form
    Bonjour

    J'ai une nouvelle tite question

    J'ai un formA dans lequel je remplis un comboBox avec les titres de colonnes de ma base de données - méthode FillCombo()

    J'ai un autre formOptions dans lequel je peux changer le path de ma bdd

    Vous voyez où je veux en venir ?

    Si je change le path dans le formOptions je souhaiterais que ça rafraichisse le combo du formA

    J'ai mis ma méthode en public, instancié le formA dans le formOptions

    Depuis formOptions j'arrive bien à exécuter mon FillCombo (point d'arrêt dans la fonction), mais bizarrement le combo du formA ne se remplit pas

    Comment faire ?

    Merci

    @++

    KaloOopS

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Je pense qu'il manque une fonction ResetBdd(string PathName) dans formA.
    C'est cette fonction qui appelera FillCombo().

    Ceci dit, il vaudrait mieux changer d'approche, par exemple :

    • formOptions devrait être un simple IHM qui permet d'afficher/modifier une liste de paramètres, avec en particulier 2 fonctions publiques SetParams(P1,P2,...) et GetParams(out P1,out P2,...).
    • Dans SetParams, on initialise l'IHM en fonction des paramètres P1,P2,...
    • Dans GetParams, on récupére les paramètres P1,P2,... suivant le contenu des Controls.
    • formA crée FormOptions, fait un FormOptions.SetParams() et FormOptions.Show(). Si le dialogResult n'est pas "Cancel", formA fait un FormOptions.GetParams() et appele les procédures adéquates en fonction des paramètres récupérés.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 166
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    wow hé ben comme quoi avec une question simple, on apprend plein de trucs (c'est bien d'être débutant, on a plus de choses à découvrir ..):

    - le "out", dont je ne soupçonnais même pas l'existence,
    - le dialogResult (dont je ne me servais que pour des OpenFileDialog, ...), avec le OK, Cancel, ... sur les boutons
    - et finalement, je me faisais ch..er à faire des this.Close, et autres méthodes dans le frmOptions,

    et en plus ça fonctionne !!!

    bref nickel (au détail près, que je dois refondre mon frmOptions pour que ça fasse "propre" ... )

    merci encore une fois Graf'

    @++

    KaloOopS

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 166
    Points : 84
    Points
    84
    Par défaut
    grrrrr

    bon alors ça fonctionne bien entendu dans le cadre d'un formA qui appelle un frmOptions

    par contre j'ai oublié de préciser mon application :

    je suis en MDI : le parent possède le menu qui demande l'ouverture du frmOptions (donc normalement je lui affecte ce qu'on a vu précédemment avec les out, diagresult ...)

    en revanche mon FillCombo (que je viens de passer en public) se trouve dans un form enfant, du coup je me retouve avec le même problème qu'énoncer au début je n'arrive pas à remplir mon combo dans le formA

    j'ai essayé ça mais sans succès le combo ne se remplit pas

    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
    // dans le form parent MDI
            private void menuOutilsOptions_Click(object sender, EventArgs e)
            {
                DialogResult dr = new DialogResult();
                frmOptions _frmOptions = new frmOptions();
                dr = _frmOptions.ShowDialog();
     
                if (dr != DialogResult.Cancel)
                {
                    _frmOptions.GetParams(out DB_NAME);
     
                    // form enfant
                    formA _formA = new formA();
                    _formA.FillCombo(DB_NAME);
                }
            }


    même topo si je mets une méthode ResetBdd qui appelle FillCombo

    @++

    KaloOopS

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 166
    Points : 84
    Points
    84
    Par défaut
    bonsoir

    ben en attendant d'avoir votre avis, j'ai trouvé une "solution", je ferme l'enfant et le relance comme ça ça me rafraichit mon form et donc mon combo

    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
    // dans le form parent MDI
            private void menuOutilsOptions_Click(object sender, EventArgs e)
            {
                DialogResult dr = new DialogResult();
                frmOptions _frmOptions = new frmOptions();
                dr = _frmOptions.ShowDialog();
     
                if (dr != DialogResult.Cancel)
                {
                    _frmOptions.GetParams(out DB_NAME);
     
                    // form enfant
                    mdiChildFormA.Close();
                    mdiChildFormA.Dispose();
                    mdiChildFormA= new mdiChildFormA();
                    mdiChildFormA.MdiParent = this;
                    mdiChildFormA.Show();
                }
            }
    c'est pas top mais bon ça fonctionne


    bon finalement mon problème venait entre autres (car je commence à me perdre dans mes essais ) de la déclaration de mon mdiChildFormA

    je mettais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form mdiChildFormA= new FormA();
    alors qu'il fallait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormA mdiChildFormA= new FormA();
    à présent je peux remplir mon combox grâce au frmOptions du form parent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                if (dr != DialogResult.Cancel)
                {
                    _frmOptions.GetParams(out DB_NAME);
     
                    // form enfant
                    mdiChildFormA.FillCombo(DB_NAME);
                }
    @++

    KaloOopS

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/01/2009, 12h45
  2. Atteindre une méthode d'une Form à partir d'une autre Form
    Par Ishizaki dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/05/2008, 17h09
  3. Réponses: 3
    Dernier message: 02/04/2007, 20h37
  4. Réponses: 4
    Dernier message: 21/04/2006, 22h08
  5. [C#] appeler Close() d'un form à partir d'un autre form
    Par vvvvv dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/02/2006, 18h36

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