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 :

Question: Contrôles inversés


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 36
    Par défaut Question: Contrôles inversés
    Bonjour,

    j'essaie d'intégrer une liste de question/réponse sous forme de 2 contrôles (label, checkedlistbox) dans un panel. Le nombre de ces question/réponse dépendra d'une base de donnée, mais là, c'est juste pour mettre en place le tout.

    La création de ces 2 contrôles est faite via une itération for, et mon souci est que l'ordre des 2 premiers contrôles est inversé, pour ensuite revenir normalement. Cela fait:

    Réponse
    Question
    Question
    Réponse
    Question
    Réponse...

    J'ai essayé de modifier les points de location, mais cela ne doit pas être le problème apparemment.

    Voici le code:
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
            /*Méthode pour créer l'instance de contrôles. Paramètres pour le nombre de questions et
              l'ajout d'un espace vertical entre les questions*/
            private void CreationControles(byte NbQuestion, int y)
            {
            //Création de l'instance du contrôle Label pour l'intitulé de la Question
            Label Question = new Label();
            //Définir la propriété du contrôle: Name."lblQuestion"=nom, suivi du paramètre NoQuestion
            Question.Name = "lblQuestion" + NbQuestion;
            //Définir la taille du contrôle dans le container (le contrôle Panel du Questionnaire ici) 
            Question.Size = new Size(this.pnlQuestionnaires.Width - 52, 39); //Taille = largeur panel -52
            //Définir la location dans le container
            Question.Location = new Point(10, y);
            //Définir l'interdiction de redimensionner le contrôle
            Question.AutoSize = false;
            //Mettre un texte "provisoire" pour l'intitulé de la question. Les questions viendront ensuite depuis la base de données.
            Question.Text = "Question";
            //Ajouter ce contrôle dans la collection du Panel
            pnlQuestionnaires.Controls.Add(Question);
    
            
    
            //Création de l'instance du contrôle CheckedListBox pour les Réponses
            CheckedListBox Reponse = new CheckedListBox();
            Reponse.Name = "clbReponse";
            Reponse.Size = new Size(this.pnlQuestionnaires.Width - 52, 39);
            Reponse.Location = new Point(10, y+40);
            Reponse.Items.Add("Réponse");
            Reponse.Items.Add("Réponse2");
            pnlQuestionnaires.Controls.Add(Reponse);
            
            }           
            
            
            private void frmQuestionnaires_Load(object sender, EventArgs e)
            {
            //Appel de la méthode pour afficher les contrôles définis
            //Description: Nom de la méthode (paramètre numéro de question, paramètre hauteur par rapport au haut du panel)
                CreationControles(4, 100);
            
            //Création de l'itération pour définir le nombre de questions/réponses selon la taille du Questionnaire
            int y = 0; //Initialisation de la variable de position des contrôles par rapport au Top du formulaire
            for (byte i = 1; i <= 10; i++)
            {
                if (i == 1)
                    y = y - 12; //1er contrôle
                else
                    y = y + 86;
                CreationControles(i, y); //Appel de la méthode
            }
                
            }
    Quelqu'un peut-il me mettre sur la voie svp?

  2. #2
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    pourquoi tu ne fais pas un usercontrol qui contient déjà les deux puis tu créés une série de ces usercontroles que tu affiches ensuite?

    dès que tu as des éléments que tu répètes plus de deux fois, c'est qu'il y a un besoin d'un usercontrol

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 36
    Par défaut
    Parce que je débute en prog, et je suis les instructions que l'on me donne aux cours. Du moins, les pistes que l'on me donne.

    Donc là, le truc était de mettre ces 2 contrôles dans une méthode. Cela fonctionne bien, sauf pour les 1er lot de contrôles.

    Quel est ce usercontrol dont tu parles? Est-ce un Groupbox qui engloberait les autres contrôles? Mais du coup, cela va me changer pas mal de choses dans le code j'imagine?

    Bon appétit

  4. #4
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    si tu débutes, autant prendre des bonnes habitudes.


    un usercontrol, c'est une sorte de Form sans bordure. ca permet d'insérer des groupes de contrôles liés en eux et inséparables.

    normalement, si tu avais bien codé le début, ca peut se faire (la modification) en mois de 20secondes


    commence par lire ceci, tu y verras l'intérêt des usercontrols
    http://morpheus.developpez.com/usercontrols/

    ensuite, dans ton cas, il faut que ton usercontrol ait un constructeur où tu pourrais lui passer un id(numéro ou lettre) ainsi que le libellé à afficher.
    puis tu laisses le contrôle se dessiner tout seul. le fait que ca soit des usercontrols, tu peux les ajouter dans un panel de ta forme et si tu joues avec la propriété dock, ils se mettront les uns en dessous des autres tout seul. tu ne toucheras jamais à la position et ca marchera dans tous les cas, même si un jour tu déplaces le panel, tout se mettra toujours bien par rapport au panel.

    je comprend que ca ne te parles pas beaucoup comme ca, mais utiliser un usercontrol, c'est diviser ton code par deux ou trois, tant pour la création des questions, que pour la lecture des résultats à la fin.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 36
    Par défaut
    Ok, j'ai compris ton explication, mais cela me paraît encore un peu trop costaud pour moi ça.
    Et j'imagine que le but de mon exercice est de me familiariser avec les outils/méthodes déjà existants, avant de partir dans des contrôles persos

    Je pense que je vais un peu creuser ça en parallèle, merci.

    En attendant, j'aimerais pouvoir comprendre le petit bug d'affichage dans mes contrôles là. Si je ne trouves pas avant mon prochain cours, je vous mettrai l'explication que j'ai reçue

    Voilà ce que ça donne de visu:

  6. #6
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par défaut
    Ton problème viens des valeurs que tu attribue dans ta boucle

    ta toute première valeur est -12...donc du coup ta question s'affiche en dehors de ta fenêtre et réponse seule s'affichera dans l'écran (étant du coup le tout premier élément que tu verra) pour la suite, des que tu passe à 2 y passe à 64... tu a une question donc a 74 et une réponse a 114 (entre ta question réponse qui étaient a 100/140 : ta toute première déclaration)
    du coup sa donne réponse1(question1 ne s affichant pas), question2, question4, réponse2, réponse4 voila pour ton souci

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

Discussions similaires

  1. Question contrôle parental
    Par Med_be dans le forum Windows 7
    Réponses: 2
    Dernier message: 12/10/2011, 14h44
  2. Contrôle saisie clavier TEdit | Petite question bête..
    Par madnux dans le forum C++Builder
    Réponses: 11
    Dernier message: 03/02/2007, 15h46
  3. Questions sur le Contrôle : RichTextBox
    Par morey6757 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 24/11/2006, 16h12
  4. Questions sur contrôle onglet
    Par valerie26 dans le forum IHM
    Réponses: 5
    Dernier message: 08/09/2006, 11h01
  5. [VB6]Questions sur deux contrôles
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 07/05/2006, 20h06

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