Popolare il controllo con il set di etichette
-
21-12-2019 - |
Domanda
Sto scrivendo un programma che ottiene dati dal registro e quindi aggiunge Groupbox a una tabcontrol e in GroupBox vorrei creare come molti controlli dell'etichetta (per visualizzare le informazioni del registro) come molti dati (chiave-Valore coppie) Ho ottenuto. Per fare ciò ho fatto questa funzione:
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);
}
.
Questa funzione viene elaborata quando è stato premuto un pulsante.Dopo che il GroupBox viene visualizzato correttamente, ma solo 1 etichetta il primo (con testo= 0) viene visualizzato invece di 21 etichetta.
Quando mi smesso di eseguire il debug del programma vedo che tutte le etichette sono esiste e tutta la proprietà è corretta, tuttavia non appaiono.
Ci deve essere qualcosa che non ho notato.
E ora la mia domanda?Cosa ho sbagliato?
Come puoi vedere ho provato la proprietà visible
e enabled
, ma nessuno dei due portami la soluzione.
Soluzione
Devi impostare
TempLabel.AutoSize = true;
.
E devi modificare il percorso un po 'come
TempLabel.Location = new System.Drawing.Point(20 + 10 * i, 30);
.
o penso che tu voglia avere le etichette uno sotto l'altro, quindi devi impostare la posizione come
TempLabel.Location = new System.Drawing.Point(20, 20+20 * i);
. Altri suggerimenti
If your Labels are a constant size then
TestGroupBox.Controls.Add(new Label()
{
Text = i.ToString(),
Location = new Point(20 + (i*20), 30),
Size = new Size(20, 20)
});
Would do the trick