FlowLayoutPanel Scrollable Autosize à plusieurs rangées

J’ai 50 images. J’ai besoin d’append ces images dans FlowLayoutPanel , 30 images pour la 1ère rangée après cette ligne et 20 images pour la deuxième rangée. J’ai donc aussi besoin d’afficher des barres de défilement sur le contrôle.

Je divise la vidéo en images (images) et montré dans FlowLayoutPanel . Lorsque je télécharge la première vidéo ci-dessous, le code permettant de définir l’image est indiqué:

 for (i = 1; i < len - 1; i++) { ImagePanel mybt = new ImagePanel(storagePath + words[0] + "_" + i + ".jpg", words[0] + "_" + i + ".jpg"); flowLayoutPanel1.Controls.Add(mybt); } 

Ensuite, lorsque je télécharge une deuxième image, je souhaite afficher les images, comme dans la première rangée, nous avons les premières images vidéo après la pause. Si quelqu’un sait comment cela peut être possible.

Pour obtenir le résultat comme vous le voyez en capture d’écran:

  • Placez votre FlowLayoutPanel dans un Panel avec la propriété AutoScroll définie sur true
  • Définissez AutoSize propriété AutoSize de votre FlowLayoutPanel sur true
  • Définissez la propriété WrapContent de votre FlowLayoutPanel sur true (valeur par défaut).
  • Définissez la propriété AutoScroll de votre FlowLayoutPanel sur false (valeur par défaut).
  • Lorsque vous ajoutez des contrôles, vous pouvez utiliser SetFlowBreak pour interrompre le stream de contrôles correspondant à ceux dont vous avez besoin.

Capture d’écran

entrez la description de l'image ici

Code

 private void button1_Click(object sender, EventArgs e) { for (int i = 0; i < 20; i++) { var btn = new Button() { Text = i.ToString() }; if (i == 5 || i==15 ) this.flowLayoutPanel1.SetFlowBreak(btn, true); this.flowLayoutPanel1.Controls.Add(btn); } } 

Ici, je brise le stream, à 5 et 15.