Question

J'écris un programme qui récupère les données du registre, puis ajoute des zones de groupe à un contrôle de tabulation, et dans la zone de groupe, j'aimerais créer autant de contrôles d'étiquette (pour afficher les informations du registre) que de données (paires clé-valeur) J'ai eu.Pour ce faire j'ai créé cette fonction :

private void AddAllControl()
{
    GroupBox TestGroupBox = new GroupBox();
    TestGroupBox.AutoSize = true;
    TestGroupBox.Text = "valami";
    TestGroupBox.Height = 500;
    for (int i = 0; i < 21; i++)
    {
        Label TempLabel = new Label();
        TempLabel.Text = i.ToString();
        TempLabel.Location = new System.Drawing.Point(20 + i, 30);
        TempLabel.Show();
        TempLabel.Visible = true;
        TempLabel.Enabled = true;
        TestGroupBox.Controls.Add(TempLabel);               
    }
    tabPage_SandBox.Controls.Add(TestGroupBox);
}

Cette fonction est traitée lorsqu'un bouton a été enfoncé.Après cela, la zone de groupe apparaît correctement, mais seulement 1 étiquette la première (avec texte = 0) apparaît au lieu de 21 étiquettes.Lorsque j'arrête de déboguer le programme, je vois que toutes les étiquettes existent et que toutes les propriétés sont correctes, mais elles n'apparaissent pas.Il doit y avoir quelque chose que je n'ai pas remarqué.Et maintenant ma question ?Qu'est-ce que j'ai fait de mal ?Comme vous pouvez le voir, j'ai essayé les deux visible et enabled propriété mais ni l'un ni l'autre ne m'apportent de solution.

Était-ce utile?

La solution

Vous devez définir

  TempLabel.AutoSize = true;

Et il faut modifier un peu l'emplacement comme

 TempLabel.Location = new System.Drawing.Point(20 + 10 * i, 30);

ou je pense que vous voulez avoir les étiquettes les unes en dessous des autres, vous devez donc définir l'emplacement comme

 TempLabel.Location = new System.Drawing.Point(20, 20+20 * i);

Autres conseils

Si vos étiquettes ont une taille constante, alors

TestGroupBox.Controls.Add(new Label()
{
    Text = i.ToString(),
    Location = new Point(20 + (i*20), 30),
    Size = new Size(20, 20)
});

Ferait l'affaire

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top