J'écris une application dans .NET 2.0 et j'ai besoin des fonctionnalités d'un FlowLayoutPanel
de WinForms. Voici le code que je suis venu avec ce que j'utilise en ce moment (la plupart du temps avec des étiquettes):FlowLayoutPanel dans CF.NET
/// <summary>
/// Flowable layout panel
/// </summary>
public partial class FlowLayoutPanel : Panel
{
public FlowLayoutPanel()
{
InitializeComponent();
}
/// <summary>
/// Flow the layout of the panel. Required before presentation.
/// </summary>
public void Layout()
{
int top = 0;
// Set control position
foreach (Control ctrl in this.Controls)
{
ctrl.Top = top;
// Account for the scrollbar
ctrl.Width = this.Width - 17;
top += ctrl.Height;
}
}
}
Le panneau est ajouté à la forme (dans mon cas, une page de l'onglet généré dynamiquement), puis ajouter contrôles dans la vue de code du formulaire, comme ceci:
panel.Controls.Add(new Label() { Text = "Item name", Font = boldTahoma });
panel.Controls.Add(new Label() { Text = item.ItemName });
panel.Controls.Add(new Label() { Text = "Category", Font = boldTahoma });
panel.Controls.Add(new Label() { Text = item.Category });
panel.Controls.Add(new Label() { Text = "Quantity", Font = boldTahoma });
panel.Controls.Add(new Label() { Text = item.Quantity });
panel.Layout();
Donc je suppose que j'ai deux questions. Cela fonctionne, mais y a-t-il une meilleure façon de le faire (surtout pour ne pas avoir à appeler Layout()
à chaque fois) et y a-t-il un moyen de faire des étiquettes auto-hauteur? Merci.