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# visibilité panel bloquée


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 102
    Par défaut C# visibilité panel bloquée
    Bonjour à tous,
    il s'agit d'un problème déjà rencontré sur le forum http://www.developpez.net/forums/sho...d.php?t=353712
    mais je ne m'en suis pas tiré...

    Je dispose d'une combobox qui suivant sa sélection, affiche ou masque des panels (qui sont supperposés).
    Cette opération se passe sans problème lors de la première execution, mais ne s'effectue pas correctement lors des suivantes (les propriétés des panels se "bloquent" à false!)

    J'ai essayé de redéfinir tous les panels parents pour éviter ce genre de défaut, d'utiliser les méthodes Show() et Hide() mais sans succès...

    Si quelqu'un a une idée?

    Merci beaucoup

  2. #2
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Es-tu sûr que ces panels (superposés) ne sont pas en fait imbriqués ? Vérifie dans le .Designer.cs de ton fichier tous les :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.panel1.Controls.Add(this.panel2)

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 102
    Par défaut
    tous mes panels semblent correctement superposés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    this.splitContainer1.Panel1.Controls.Add(this.panela);
                this.splitContainer1.Panel1.Controls.Add(this.panelb);
                this.splitContainer1.Panel1.Controls.Add(this.panelc);
                this.splitContainer1.Panel1.Controls.Add(this.paneld);
    et meme lorsque je veux mettre le splitContainer1.visible à true, ça me le bloque à false. (j'ai aussi regardé sa hierarchie supérieure)


  4. #4
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Ce que tu nous montres indique seulement que ton splitcontainer contient tes 4 panel a, b, c et d.
    Tu as peut-être à un autre endroit quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.panela.Controls.add(this.panelb)
    Si tu n'as pas d'autres Controls.Add(), alors tes panels a, b, c et d ne sont pas imbriqués. A ce moment-là, sans plus de détails, je ne vois pas ce qui n'irait pas.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 102
    Par défaut
    Je viens de constater que je peux gerer ces mécanismes de visibilité dés lors que je ne "travaille" pas dessus.
    -> d'un bouton de test, une fois l'affichage terminé, je modifie l'affichage (ce qu'il fait correctment) alors que lorsque je suis en train de dessiner le contrôle où se trouvent mes panels, je ne peux pas modifier leurs propriétés... Dois-je attendre qu'il se dessine entièrement avant de modifer la visibilité de mes panels?

  6. #6
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Citation Envoyé par maxdwarf Voir le message
    Dois-je attendre qu'il se dessine entièrement avant de modifer la visibilité de mes panels?
    Tu veux passer la charrue avant les boeufs

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 102
    Par défaut
    je voudrais savoir pourquoi ça fonctionne la première fois ,alors que le contrôle n'est pas plus dessiné, que les autres fois?

    Existe-t-il un moyen de savoir si le contôle est fini de redessiner ? )

  8. #8
    Membre éprouvé Avatar de Nikoui
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Par défaut
    Qu'entends tu par "dessiner" le contrôle ? Du code de la méthode Paint du contrôle appelé à chaque fois que le contrôle doit être affiché à l'écran ? ou de la création de la Form et des panels lorsqu'elle doit être affichée à l'écran ?

  9. #9
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 102
    Par défaut
    Pour etre plus précis, mes panels sont contenus dans un composant qui doit ce présenter dans des onglets (donc j'ajoute dans une list<> un nouveau composant 'panel') et lors de sa première présentation (premier onglet ouvert) tout ce passe correctement, mais lors des présentations suivantes(onglets supplementaires) les panels (pourtant indépendants de ceux crées précedement) ne s'affichent pas correctement...
    Donc je parle de dessin lorsque la "form" est créee...

  10. #10
    Membre éprouvé Avatar de Nikoui
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Par défaut
    Et comment procède tu exactement pour construire ta Form (lorsque tu instancie et ajoute les panels à chacun des onglets) ? Tu le fait dans le designer (le code est alors inclus dans la méthode "InitializeComponents" de ta Form) ou tu le fais "toi même" par code ? (et si c'est par code, à quel endroit : dans le constructeur, le OnLoad, le Activated, l'affichage d'un onglet, etc).

    De même, si j'ai bien compris tu cherche a masquer/afficher des panels lorsque l'utilisateur sélectionne ou non une chelckbox -> est ce que cela est fait après que les panels soit construits/ajoutés à la Form ? ou bien est ce que cela est fait avant la création des Panels, dans une autre Form ?

  11. #11
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 102
    Par défaut
    En fait pour essayer de faire simple :
    je clique sur un item d'une ListView qui affiche un onglet,
    sa création est dans une méthode appelée lors de ce clic


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //déclaration de la liste des contrôles Control_Panel
    public List<Control_Panel > Onglet_Panel = new List<Control_Panel>();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private void nouvel_onglet(string Nom,int Index_Item)
            {    
                Zone_Onglets.TabPages.Add(Nom, Nom);
               //création d'un nouveau composant dans la liste
               Onglet_Panel.Add(new Control_Panel());
               //mise en page et disposition
               Onglet_Panel[this.NombreOnglet].Parent = this.Zone_Onglets.TabPages[NombreOnglet];
    ...
            }
    à partir de là je charge les données qui doivent apparaître dans ce composant, mais, alors que tout fonctionne, seule une combobox (en droplist) qui doit permettre de masquer ou non les panels n'est pas affectée correctement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Onglet_Panel[this.NombreOnglet].Nom = Designation ; //ça marche
    Onglet_Panel[this.NombreOnglet].SetCombobox(Type); //ça ne marche pas!
    où SetCombobox(string strtype) est une méthode publique du composant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void SetCombobox(string SelectType)
            {
                Combo_Type.SelectedItem = SelectType;
            }

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

Discussions similaires

  1. Je suis bloqué dans un exercice. GridBagLayout et gbConstraints, panels.
    Par CosaNostra dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 17/02/2010, 09h23
  2. Problème de visibilité avec un panel
    Par Sh0ck dans le forum Composants VCL
    Réponses: 7
    Dernier message: 20/01/2009, 09h42
  3. Visibilité d'un Panel
    Par Crokan dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/04/2008, 22h17
  4. Visibilité de Panel par Javascript
    Par Alabama-song dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/07/2007, 18h19
  5. Réponses: 3
    Dernier message: 24/11/2005, 09h44

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