Comment faire défiler un panneau par programme
J'ai un System.Windows.Forms.Panel
avec un peu de contenu.
Je suis en train de programmation pour faire défiler le panneau (à la verticale), soit vers le haut ou vers le bas.
J'ai essayé le réglage de la AutoScrollPosition
propriété à un nouveau Point
sur le panneau, mais qui ne semble pas le faire.
J'ai le AutoScroll
propriété est définie sur true.
J'ai même essayé de définir le VerticalScroll.Value
deux fois, comme l'a suggéré icimais cela ne semble pas fonctionner non plus.
C'est ce que je fais actuellement:
//I have tried passing both positive and negative values.
panel.AutoScrollPosition = new Point(5, 10);
Les valeurs X et Y sur AutoScrollPosition restent, 0 et 0.
Toute aide ou une orientation sur ce serait grandement apprécié.
Merci d'avance,
Marwan
source d'informationauteur Marwan Marwan مروان مروان
Vous devez vous connecter pour publier un commentaire.
Ici est une solution. Je suppose que vous pouvez faire défiler votre
Panel
par l'arbitraire de la position à l'aide deWin32
cependant il y a un truc simple pour vous aider à atteindre votre condition ici:Ou de l'utilisation de la méthode d'extension pour plus de commodité:
Mise à JOUR
Si vous souhaitez définir la position exacte, modifiant le code ci-dessus un peu peut aider:
Une autre solution que vous pouvez utiliser est à l'aide de
Panel.VerticalScroll.Value
. Cependant, je pense que vous avez besoin de plus de recherche pour le faire fonctionner comme vous le souhaitez. Parce que je peux voir une fois la modification de laValue
la barre de défilement de la position et de la position de la commande ne sont pas synchronisés. Notez quePanel.VerticalScroll.Value
devrait être entrePanel.VerticalScroll.Minimum
etPanel.VerticalScroll.Maximum
.Si vous avez une classe qui dérive de
Panel
puis d'appeler ces deux protégés méthodes pour faire défiler le panneau:Dans mon exemple,
item.BoundingRect.Bottom
est la coordonnée Y du bas de vignette, et j'ai besoin de faire défiler le panneau vers le bas, de sorte que l'ensemble de la vignette est visible.@King de la solution de la création d'un Contrôle temporaire juste pour que le défilement peut être fait semble "lourd" pour moi. Et @Hans Passant, à la suggestion de réglage
AutoScrollMinSize
etAutoScrollPosition
ne fonctionne pas pour moi.Laisser
AutoScroll
à sa valeur par défaut de "vrai".Essayez ceci:-
le panneau.ScrollControlIntoView(childcontrol);
Cela devrait fonctionner. childcontrol est le contrôle en particulier que vous voulez afficher dans votre zone d'affichage.
Utiliser @King Répondu Code et si vous voulez cacher de défilement horizontale et verticale de la barre, il suffit d'appliquer le code ci-dessous dans le constructeur ou l'initialisation.
J'ai eu un problème où je ne pourrais pas obtenir mon panneau défiler l'écran vers le haut . J'ai essayé beaucoup de choses pour essayer et obtenir le panneau défiler l'écran vers le haut après le remplissant avec de nombreux contrôles.
Nomatter ce que j'ai fait il toujours mettre le VScroll barre vers le bas.
Après l'essai exhaustif, j'ai trouvé que c'était parce que mes témoins avaient le TabStop propriété est définie sur true (valeur par défaut sur les contrôles de l'utilisateur) a été à l'origine du problème.
Réglage TabStop à faux fixe.