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#] Problème de scroll dans un panel


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [C#] Problème de scroll dans un panel
    Bonjour,

    Dans une application j'ai un panel qui contient une grande quantité de contrôles construit dynamiquement (textbox,picturebox...). J'ai bien évidemment rajouté une scrollbar car on ne voyait pas tous les controles.

    Le problème c'est que lors du scroll les composants deviennent tout "moches". Ils se chevauchent, on voit des traits dans tous les sens....C'est comme si ils se dépacait en meme temps que le scroll pour se redessiner ensuite à une autre place. Par contre dès que je relache le bouton, le panel esty redessiné et les controles sont au bon endroit.

    Pour pallier à ce problème je fais un Update de mon panel sur l'évenement Scroll. Mais bon vu que il y a beaucoup de controles ca rame un peu. Donc c'est pas le top.

    J'magine qu'on doit pouvoir faire quelque chose en utilant le Layout mais j'avoue que je vois pas trop. Donc si quelqu'un aviat une idée...

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut [C#][1.1]Problème de scroll dans un panel
    Bonjour,

    J'ai un autre type de problème lié à l'ajout de contrôle dans un panel, par contre, je peux te montrer comment moi j'ajoute mes contrôles.

    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
     
    #region AFFICHER LES QUESTIONS DANS LE PANEL CONTENEUR
    internal void setConteneurQuestion(Panel monQuestionnaire, DataRow[] mesQuestions)
    {
     
    	/* 	maQuestionBooleene est un contrôle utilisateur composé d'un textbox, de 2 RadioButton
    		et d'un richtextbox. J'en ajoute plusieurs dynamiquement au panel passé en paramètre 
    		pour générer un questionnaire.
    		Le textbox de maQuestionBooleene est mis à jour par un des DataRow de mesQuestions.
    	*/	
     
    	String leThemeEnCours = "";
    	foreach(DataRow uneQuestion in mesQuestions)
    	{
    		//J'ajoute ponctuellement au panel Un textBox dont le libellé
    		//est le nouveau thème dont feront parties les questions.
    		if(uneQuestion["question_theme"].ToString() != leThemeEnCours)
    		{					
    			leThemeEnCours = uneQuestion["question_theme"].ToString();
    			TextBox unTextBoxTheme = new TextBox();
    			unTextBoxTheme.Font = new Font("Arial", 20, FontStyle.Bold);
    			unTextBoxTheme.ForeColor = Color.PeachPuff;
    			unTextBoxTheme.BackColor = Color.DarkRed;
    			unTextBoxTheme.Dock = DockStyle.Bottom;
    			unTextBoxTheme.BorderStyle = BorderStyle.None;
    			unTextBoxTheme.Text = leThemeEnCours;
    			monQuestionnaire.Controls.Add(unTextBoxTheme);
    		}
     
     
    		QuestionTypeBool maQuestionBooleene = new QuestionTypeBool(uneQuestion);
    		maQuestionBooleene.Dock = DockStyle.Bottom;
    		maQuestionBooleene.Name = "maQuestionBooleene";
    		maQuestionBooleene.libelleTextbox.Text = uneQuestion["question_libelle"].ToString();
    		monQuestionnaire.Controls.Add(maQuestionBooleene);
     
    	}
    	monQuestionnaire.AutoScroll = true;
    }
    #endregion
    Et donc, tout ceci s'affiche merveilleusement bien, mon scrollbar apparaît comme il faut, où il faut, je vois tous les contrôles, c'est magnifique mais...Eh oui il y a un mais...Lorsque je clique sur un contrôle (utilisateur ou non, le textbox d'un thème de questions par exemple), le scrollbar revient à sa position initiale, sans perdre le focus du contrôle sur lequel j'ai cliqué. Je m'interroge sur l'origine de ce bug.
    Est ce que ca peut venir d'une histoire de zone client et zone non cliente ? En effet, une fois tous les contrôles ajoutés, mon panel change de taille physiquement, mais quand je l'interroge en contrôlant sa taille avant et aprés ajout, il me renvoie des tailles similaires.

    Je vous remercie d'avance pour toutes suggestions à ce propos.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut [C#] Problème de scroll dans un panel
    Sinon, pour ton problème de chevauchement, regardes aussi du côté des ancrages de tes contrôles...Dans les propriétés de ton contrôle, section Disposition, puis Anchor.

    Bon courage

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    Pourquoi ne pas laisser le LayOut rajouter tout seul la scrollbar ?
    Dans mon cas, FlowLayOut rajoute lui-même la scrollbar comme un grand.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut [C#] Problème de scroll dans un panel
    L'objet Panel a une propriété AutoScroll qu'il faut mettre à vrai si l'on veut que justement les scrollbar apparaissent automatiquement, en tout cas, si nous parlons bien de C#. En ce qui me concerne, elle est par défaut à false, ce qui explique pourquoi dans ma petite fonction je la refais passer à vrai, car ça ne m'interessait pas de voir tout le temps apparaitre les scrollbars. Et de toute façon, à vérifier, mais il me semble que quand t'ajoute un objet Panel à un UserControl, ou un objet Form, cette propriété n'est pas à vrai par défaut. De même pour un textbox multiligne etc...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut [C#] Problème de scroll dans un panel
    Les flowLayout c'est une des évolution de la 2.0 ? car j'suis toujours avec l'ancienne. bon quoiqu'il en soit, ca résoud pas mon problème moi

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Je vais tester ton truc, ca m'a intrigué, je télécharge le nouveau framework, et je teste !!!!

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut [C#] [2.0]Problème de scroll dans un panel
    Bon, je bosse maintenant avec les éditions express de visual studio, toujours du c#, et donc j'utilise un flowLayoutPanel, et ca n'a fait que déplacer mon problème
    je crée donc un flowlayoutpanel dynamiquement, je l'ajoute à mon formulaire, puis j'ajoute plusieurs instances d'un usercontrol.
    La propriété flowdirection est définie à topdown car je veux que ces usercontrol se retrouve les uns en dessous des autres (voir le code plus haut). Cette fois j'obtiens un panel avec mes usercontrols les uns en dessous des autres , mais, il les ajoute aussi de gauche à droite, quand il n'y a plus de place vers le bas, au lieu d'ajouter vers le bas à l'infini.
    Donc est ce un problème de taille du flowlayoutpanel, ou une propriété que j'utilise mal peut être ?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut [C#] [2.0]Problème de scroll dans un panel
    Bon, bah, comme quoi des fois il suffit d'en parler, j'ai mis la propriété AutoSize à true, et là ca a l'air de fonctionner...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    Tu peux aussi te définir ton propre panel qui implémentera ton layout qui va bien...

Discussions similaires

  1. Problème de focus dans un panel
    Par Scots dans le forum ASP.NET
    Réponses: 9
    Dernier message: 30/09/2011, 18h29
  2. Intégrer un scroll dans un panel
    Par stefsas dans le forum ASP.NET
    Réponses: 1
    Dernier message: 10/06/2010, 10h03
  3. Problème d'Affichage dans un Panel
    Par A&Nexus dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 15/04/2008, 10h24
  4. Problème de scroll dans un panel
    Par Shypster dans le forum Windows Forms
    Réponses: 9
    Dernier message: 06/12/2007, 09h56
  5. Problème de traduction dans un panel
    Par nitrous007 dans le forum C#
    Réponses: 2
    Dernier message: 24/10/2007, 11h36

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