Füllen Sie das Steuerelement mit einer Reihe von Beschriftungen
-
21-12-2019 - |
Frage
Ich schreibe ein Programm, das Daten aus der Registrierung abruft und dann Gruppenboxen zu einem Tabcontrol hinzufügt, und in der Groupbox möchte ich so viele Label-Steuerelemente (um die Registrierungsinformationen anzuzeigen) wie viele Daten (Schlüssel-Wert-Paare) erstellen. Ich habe.Dazu habe ich diese Funktion erstellt:
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);
}
Diese Funktion wird ausgeführt, wenn eine Taste gedrückt wird.Danach wird das Gruppenfeld korrekt angezeigt, es wird jedoch nur 1 Beschriftung (mit Text = 0) anstelle von 21 Beschriftungen angezeigt.Wenn ich aufhöre, das Programm zu debuggen, sehe ich, dass alle Beschriftungen vorhanden sind und alle Eigenschaften korrekt sind, sie werden jedoch nicht angezeigt.Es muss etwas geben, das mir nicht aufgefallen ist.Und jetzt meine Frage?Was habe ich falsch gemacht?Wie Sie sehen, habe ich beides ausprobiert visible
Und enabled
Eigentum, aber keines von beiden bringt mir eine Lösung.
Lösung
Du musst einstellen
TempLabel.AutoSize = true;
Und Sie müssen den Standort ein wenig ändern
TempLabel.Location = new System.Drawing.Point(20 + 10 * i, 30);
oder ich denke, Sie möchten die Beschriftungen untereinander haben, also müssen Sie den Ort wie folgt festlegen
TempLabel.Location = new System.Drawing.Point(20, 20+20 * i);
Andere Tipps
Wenn Ihre Etiketten eine konstante Größe haben, dann
TestGroupBox.Controls.Add(new Label()
{
Text = i.ToString(),
Location = new Point(20 + (i*20), 30),
Size = new Size(20, 20)
});
Würde den Zweck erfüllen