2009-08-24 10 views
4

Je crée un contrôle utilisateur qui est essentiellement un panneau (avec un contenu aléatoire à l'intérieur), et je dois pouvoir faire défiler ce panneau vers le haut et vers le bas en utilisant les boutons (haut et bas) plutôt que la barre de défilement.WinForm Défilement du panneau sans barre de défilement?

La raison pour laquelle je dois le faire de cette façon est parce que le programme sera utilisé sur un écran tactile et nous avons besoin de gros boutons plutôt que d'une petite barre de défilement laide. J'ai déjà joué avec les propriétés VerticalScrollbar, et aucune d'entre elles ne semble faire quoi que ce soit. J'ai remarqué que si je définissais AutoScroll sur false, AutoScrollPosition affiche réellement les coordonnées, sauf le négatif de ce qu'il devrait être. En outre, j'ai remarqué que panel.VerticalScrollbar.Visible = true; ne semble fonctionner que lorsqu'il est placé en dehors du constructeur. Y at-il une raison à cela?

Fondamentalement, les barres de défilement de WinForms sont très confus (buggy?) Pour moi. Est-ce que quelqu'un sait un bon moyen de faire défiler un panneau par programmation avec des boutons (je ne me soucie pas si j'ai besoin d'une barre de défilement invisible).

Merci! = D

Répondre

5

Faites de UserControl un UserControl standard (c'est-à-dire que vous héritez de UserControl au lieu de Panel) et placez un Panel sur votre UserControl. Placez n'importe quel contenu/contrôle sur le panneau intérieur, puis modifiez les propriétés Left et Top du panneau pour le déplacer sans barres de défilement. Vous pouvez également ajouter des boutons à votre UserControl pour gérer le mouvement du panneau interne. Un moyen plus simple, cependant, pourrait être d'utiliser des barres de défilement très larges/hautes, et de définir leur Thumbwidth (je pense que c'est la propriété) à la même valeur - cela produira des barres de défilement faciles à utiliser avec le des doigts. À ma connaissance, il n'y a aucun moyen de faire cela avec les barres de défilement qui apparaissent sur un panneau avec Autoscroll défini sur True, donc vous devez toujours utiliser la méthode mentionnée ci-dessus (avec un panneau interne assis sur votre UserControl) et ajouter les barres de défilement pour le déplacer vous-même. Je suis d'accord pour dire que les barres de défilement dans Windows sont nulles, alors même si je suis normalement en faveur de l'utilisation des contrôles standard auxquels tout le monde est habitué, je ne vois rien de mal à rouler les vôtres dans ce cas.

+0

Salut, merci pour la bonne réponse MusiGenesis! Je pensais en quelque sorte que déplacer l'emplacement du panneau serait le moyen le plus facile de le faire. Cependant, je voulais éviter de faire cela puisque la taille du panneau serait basée sur les choses à l'intérieur, et maintenant je dois faire plus de travail pour comprendre la taille du panneau et d'autres choses. Néanmoins, cela semble être le chemin que je vais prendre. Merci encore! – Alex

Questions connexes