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 :

MdiChildren et appel de méthodes


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 MdiChildren et appel de méthodes
    Bonsoir

    j'ai une application MDI dans laquelle je souhaiterais appeler une méthode qui se nomme pareil dans tous mes forms enfants (mais ne fait pas la même chose selon les forms car pas les mêmes controls)

    je m'explique, je souhaiterais avoir un truc du genre (dans le form parent) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                foreach (Form mdiChild in this.MdiChildren)
                {
                    mdiChild.MaMethode();
                }
    est-ce possible sachant que la méthode dans les form enfant est bien en public ?
    je ne sais pas comment faire, car bien entendu, mdiChild (dans le foreach) ne connait pas les méthodes.

    merci

    @++

    KaloOopS

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    implémenter une interface ayant la méthode sur les forms
    dans le for each vérifier si le form implémente l'interface (gettype en c# je crois)
    puis caster mdichild sur l'interface (IMachin)mdichild.laméthode ou un truc dans le genre

  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
    Merci Pol pour ta réponse,

    malheureusement je suis désolé je ne comprends pas tout ...

    je buche sur :
    foreach vérifier si le form implémente l'interface (gettype en c# je crois)
    comment utiliser le GetType?

    @++

    KaloOopS

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    via un convertisseur vb.net <=> c# j'obtiens ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public interface IMachin 
    {
         void maméthode(); 
    }  
     
    public class form1 : IMachin 
    {      
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foreach (form frm in this.MdiChildren) 
    {
         if (frm is IMachin) 
           {
             ((IMachin)frm).maméthode();
            } 
    }
    sinon tu peux peut-etre faire .OfType sur this.mdichildren ce qui permet de typer directement dans le foreach sur IMachin

  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
    Merci Pol pour ta réponse

    au début j'ai eu du mal a déchiffrer ton "chinois" (ben vi je suis débutant), mais après en grattant la toile j'ai mieux compris certaines choses

    j'ai donc créé un Interface.cs avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    interface IMonInterface
    {
    void MaMethode();
    }
    ensuite dans les forms enfant pour que le cast fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((IMachin)frm).MaMethode();
    j'ai du mettre dans la définition de la form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public partial class Form2 : Form, IMonInterface
     
     
    // ...
     
    public void MaMethode()
    { ... }
    merci encore

    @++

    KaloOopS

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

Discussions similaires

  1. Appeler une méthode dynamiquement
    Par doof dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/01/2005, 23h15
  2. Comment l'appel à une méthode virtuelle....
    Par Blobette dans le forum C++
    Réponses: 7
    Dernier message: 07/12/2004, 13h55
  3. appel entre méthodes de meme classe
    Par frmaniako dans le forum C++
    Réponses: 8
    Dernier message: 10/09/2004, 22h55
  4. [Débutant] [JSP] Appel de méthode
    Par Crazyblinkgirl dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 10/09/2004, 11h10
  5. [Débutant] Héritage & appel de méthodes
    Par KooX dans le forum Langage
    Réponses: 4
    Dernier message: 11/05/2004, 23h37

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