Pregunta

Estoy escribiendo un programa que obtiene datos del registro y luego agrega cuadros de grupo a un control de pestaña, y en el cuadro de grupo me gustaría crear tantos controles de etiqueta (para mostrar la información del registro) como tantos datos (pares clave-valor) Obtuve.Para hacer esto hice esta función:

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);
}

Esta función se procesa cuando se presiona un botón.Después de eso, el cuadro de grupo aparece correctamente, pero solo aparece 1 etiqueta, la primera (con texto = 0) en lugar de 21 etiquetas.Cuando dejo de depurar el programa veo que todas las etiquetas existen y todas las propiedades son correctas, sin embargo, no aparecen.Debe haber algo que no noté.¿Y ahora mi pregunta?¿Qué hice mal?Como puedes ver, probé ambos. visible y enabled propiedad pero tampoco de traerme solución.

¿Fue útil?

Solución

Tienes que configurar

  TempLabel.AutoSize = true;

y tiene que modificar la ubicación un poco como

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

o creo que desea tener las etiquetas una debajo del otro, por lo que debe configurar la ubicación como

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

Otros consejos

Si sus etiquetas tienen un tamaño constante, entonces

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

haría el truco

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top