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 :

[C#]dialogue "dynamique" dans un split container


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 9
    Points : 5
    Points
    5
    Par défaut [C#]dialogue "dynamique" dans un split container
    Bonjour à tous.
    Je passe dans la douleur de visual C++ à Visual studio 2005 et je rencontre un problème :

    j'ai un écran qui contient un splitcontainer.
    ce que je voudrais faire, c'est qu'en fonction de différentes actions sur les controles du panel1 (qui va contenir une grid), j'affiche un dialogue différent dans le panel2.
    j'ai créé les dialogues en question, avec le formborderstyle à "none", il ne me reste plus qu'à les afficher dans le panel souhaité.

    Je ne demande pas un code complet, juste une piste pour, un tuto, bref de quoi avancer.

    merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Simple suggestion : pourquoi ne pas créer, dans ton Panel2, plusieurs Panel (un par dialogue) et selon l'action effectuée sur ton Panel1, tu caches les autres et n'affiche que celui que tu veux ?

    ex.
    Dans la méthode de chacune des actions de Panel1
    -> Cacher tous les panels qui sont dans le Panel2 (dans une méthode séparée si beaucoup de panels)
    -> Afficher le Panel que tu veux

    En espérant que ce soit utile...

  3. #3
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Intuitivement je t'orienterai sur la création d'une Enum DialogType qui regroupe les identifiants de tous les dialogs affichage en Panel2
    Ensuite, dans tous les évenements concernés de Panel1, tu fais l'appel d'une méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...this.SetDialogInPanel2( DialogType.WantedDialog)...

    Il ne reste plus qu'à implementer cette méthode SetDialogInPanel2 qui selon l'élément de DialogType indiqué (switch...case), effectuera le Clear necessaire dans Panel2 pour réinitialiser sa collection Controls
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  4. #4
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    ah, très bonne orientation

    pour l'affichage pour l'instant j'ai trouvé cette méthode, un peu "passag en force" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     private void OnEventQuelconque(object sender, EventArgs e)
            {
                this.splitContainer2.Panel2.Controls.Clear();
                Testdlg dlg = new Testdlg();
                System.Windows.Forms.Control.ControlCollection cc = dlg.Controls;
                Control[] array = new Control[cc.Count];
                cc.CopyTo(array, 0);
                this.splitContainer2.Panel2.Controls.AddRange(array);
     
            }
    merci de ton aide en tout cas !!

  5. #5
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par casa13
    ah, très bonne orientation

    pour l'affichage pour l'instant j'ai trouvé cette méthode, un peu "passag en force" :
    effectivement c'est du "poids lourd"
    çà mérite tout de même d'être simplifié non
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  6. #6
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    oui, et toute aide est la bienvenue !!
    j'ai vraiment pas l'habitude de ces langages "haut niveau".

    Par contre tout marche "nickel"

    Un bourrin en C#

  7. #7
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Ben si Testdlg est un héritier de UserControl
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    public enum DialogType
    {
       Event1,
       Event2,
       Event3,
      //...;
    }
    private void OnEvent1(object sender, EventArgs e) 
    { 
       this.SetDialogInPanel2(DialogType.Event1)
    }
    private void OnEvent2(object sender, EventArgs e) 
    { 
       this.SetDialogInPanel2(DialogType.Event2)
    }
    private void OnEvent3(object sender, EventArgs e) 
    { 
       this.SetDialogInPanel2(DialogType.Event3)
    }
    //...
     
    private void SetDialogInPanel2(DialogType dlg)
    {
       this.splitContainer2.Panel2.Controls.Clear();
       switch (dlg)
       {
          caseDialogType.Event1: 
            this.splitContainer2.Panel2.Controls.Add(new Dialog1());
          caseDialogType.Event2: 
            this.splitContainer2.Panel2.Controls.Add(new Dialog2());
          caseDialogType.Event3: 
            this.splitContainer2.Panel2.Controls.Add(new Dialog3());
          //...
       }
    }
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

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

Discussions similaires

  1. [xsl]simuler le mecanisme OO de "liaison dynamique"
    Par philemon_siclone dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 19/12/2003, 11h34

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