[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...
[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:
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.
[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 ;)
[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...
[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 :( :cry:
[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 ?
[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...:oops: