[Winforms] User control et stack
Bonjour,
pour un petit projet en c# j'ai crée un user control tout simple composé d'un split panel qui contient lui même un split panel qui contient lui même 2 labels.
J'ai une window principale qui contient un menu en haut (toolstrip) et un panel en prends tout le reste de la place en dessous.
Dans ce panel je voudrais ajouter mon user control mais j'aimerais:
1. Qu'il prenne toute la largeur
2. Que les user controls se "stack" les uns en dessous des autres qui a ce q'une scrollbar apparaisse.
Actuellement quand j'ajoute plusieurs de mes user control ils se superposent.
Quelqu'un aurait une idée, ou une expérience dans le même genre?
Merci
empiler une serie de usercontrol
bonjour leoz01
comme l'as dit tomlev tu peux utiliser un FlowLayoutPanel sur ton form .
Tu peux garder aussi ton panel ,
-garder un controle sur la hauteur de ton tonUserControl
-lui demander de s'adapter à la largeur du Panel parent
-demander meme au panel parent de scroller dans le cas ou l'utilisateur le place sur un Pane
Mais il faut bien sur peaufiner un peu plus ton tonUserControl .
voici le code du usercontrol qui s'empile au fur et à mesurer qu'on en ajoute des exemplaires dans un panel qui devient scrollable quand il le faut:
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 41 42 43 44
|
//code du usercontrol
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WinStackingControls
{
public partial class myUserControl : UserControl
{
//Declare a panel object at class-level:
private Panel myHostPanel;
public myUserControl()
{
InitializeComponent();
//on garde un oeil sur la hauteur
this.Height = 100;
this.BackColor = Color.Red;
//Ici le choix fatigue qui entraine l'empilement à la que-leuleu.
this.Dock = DockStyle.Top;
this.BorderStyle = BorderStyle.FixedSingle;
this.Name = "MyUserControl";
}
// The ParentChanged event of the user control.
//Verifie si le parent est un panel et le mets AutoScroll à true
private void myUserControl_ParentChanged(object sender, EventArgs e)
{
if (this.Parent is Panel)
{
myHostPanel = (Panel)this.Parent;
myHostPanel.AutoScroll = true;
}
}
} |
Tu genere d'abord ton projet pour voir le usercontrol dans la boite à outils.
Pour l'utiliser eh bien,tu crees un form ,tu places un panel dessus et tu ajoutes ta serie de usercontrols qui s'empilent sagement de haut en bas.....
bon code......................