Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#6

Re: Durch Array mehrere Label auf visible setzen

  Alt 16. Jul 2007, 11:52
Hallo Michael,

bei NET musst Du nicht nach Components suchen, sondern nach Controls: Jedes Control speichert die Elemente, die es enthält. Vorteil: Du kannst (z.B. innerhalb eines Panel) alle unmittelbar darin enthaltenen Elemente direkt suchen und bearbeiten. Nachteil: Wenn alle Controls eines Formulars benötigt werden, muss immer rekursiv gearbeitet werden. Konkret (in C#-Schreibweise):
Code:
for (int i0 = 0; i0 < MyPanel.Controls.Count; i0++) {
    if (MyPanel.Controls[x0] is Label) {
        MyPanel.Controls[x0].Visible = true;
    }
}
//  oder direkt für ein bestimmtes Control:
MyPanel.Controls["Label8"].Visible = true;
Je nachdem, was Du ansonsten erreichen möchtest, ist SirThornberry's Vorschlag besser, die Labels erst zur Laufzeit zu erzeugen. Wie Du das machst, steht im Abschnitt "Vom Designer generierter Code". Das kannst Du in eigene Prozeduren übertragen, etwa so:
Code:
private void CreateLabel(string name, string caption, int left, int top) {
    //  deklarieren und erzeugen
    Label newLabel = new Label();
    //  Eigenschaften zuweisen
    newLabel.Name = name;
    newLabel.Text = caption;
    newLabel.Width = 60;
    newLabel.Height = 13;
    newLabel.Left = left;
    newLabel.Top = top;
    //  dem Panel oder Form zuweisen
    MyPanel.Controls.Add(newLabel);
}
Viel Erfolg! Jürgen

PS. Ich hoffe, es gelingt Dir selbst, den Code in Delphi-Schreibweise zu übersetzen. Wenn ich das machen will, dauert es länger und dürfte fehlerhaft sein.
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat