2010-01-12 3 views
12

J'ai un panneau avec une zone d'image. Lorsque le contenu de l'image est trop grand, je veux des barres de défilement. J'ai défini le paramètre autoscroll sur true sur le panneau. Mais lorsque le contenu de la zone d'image est plus grand que la hauteur du panneau/de la zone d'image, aucune barre de défilement n'est affichée.C# Le défilement automatique du panneau ne fonctionne pas

Mon panneau est ancré en haut, à gauche, en bas et à droite. La zone d'image est également ancrée en haut, à gauche, en bas, à droite.

Répondre

20

Vous devez définir la propriété SizeMode sur AutoSize, ce qui entraîne le redimensionnement automatique de la PictureBox en fonction de la taille de l'image.

Et je pense que vous devriez laisser tomber les ancres et ancrer seulement en haut à gauche. Le reste est pris en charge automatiquement par le panel. Car sinon, PictureBox honorerait probablement les ancres, étant incapable de se redimensionner lui-même plus grand que le panneau qu'il contient - conduisant à aucune barre de défilement à nouveau.

+3

« Je pense que vous devriez laisser tomber les points d'ancrage et ancrage uniquement en haut à gauche » sauver ma journée, ty! –

6

La zone d'image ne doit pas être ancrée en bas et à droite. Au lieu de cela, redimensionnez-le au contenu à afficher.

9

De MSDN:

Il y a actuellement une limitation dans Windows Forms qui empêche toutes les classes dérivées de ScrollableControl d'agir correctement lorsque les deux RightToLeft est activé et AutoScroll est réglé sur True. Par exemple, supposons que vous placez un contrôle tel que Panel - ou une classe de conteneur dérivée de Panel (tel que FlowLayoutPanel ou TableLayoutPanel) - sur votre formulaire. Si vous définissez AutoScroll sur le conteneur à True, puis définissez la propriété Anchor sur un ou plusieurs des contrôles à l'intérieur du conteneur à Right, aucune barre de défilement n'apparaît jamais. La classe dérivée de ScrollableControl agit comme si AutoScroll ont été définies sur False.

+3

Y a-t-il une mention de RightToLeft? – Ashe

+0

Oui, lisez attentivement. – serhio

+2

Je voulais dire dans la question! Je ne le vois pas. Cette réponse ne concerne que lorsque 'RightToLeft' et' AutoScroll' sont activés .. mais je ne pense pas que la question décrit un tel scénario? – Ashe

-1

Modifiez le style de bordure du panneau en fixe unique, puis la propriété de défilement automatique du panneau sur Vrai.

1

Pour moi ci-dessous le code a aidé à ajouter scrollbar:

Panel2.Controls.Clear(); 
Panel2.AutoScroll = false; 
Panel2.VerticalScroll.Enabled = true; 
Panel2.VerticalScroll.Visible = true; 

Panel2.AutoScroll = true; 
+0

Il se sent très hacky, mais il a fait l'affaire dans une situation très spéciale. Les effets secondaires Darn :-) –

Questions connexes