2016-06-07 11 views
0

ich einig Label-Steuerelement mit dem Namen wie folgt: Label1, Label2, Label3 ....... Label14, untauglich zur Entwurfszeit. Jetzt möchte ich ihnen ermöglichen, eine for-Schleife in der folgenden Weise unter Verwendungzur Laufzeit aktiviert eine Reihe von in Reihe namens Label-Steuerelemente mit C#

for(int i=1;i<15;i++) 
{ 
    (Label+i).Enabled = true; 
} 

Offensichtlich ist der obige Code nicht kompiliert.

Label1.Enabled = true; 
Label2.Enabled = true; 
Label3.Enabled = true; 
........... 
Label14.Enabled = true; 

Gibt es eine andere Art und Weise das gewünschte Ergebnis anders als die Art und Weise zu erreichen, erwähnt nur above.Hope ich mich mit code.Thanks im Voraus die klar Beratung machen

+0

dieselbe Antwort wie folgt verwendet werden: http://stackoverflow.com/questions/18481029/set-all-labels-font-before- opening-the-form verwendet stattdessen die Eigenschaft enabled. – theB

Antwort

2

können Sie Steuerelemente von Namen erhalten von Controls der Mutter Sammlung

for(int i = 1; i < 15; i++) 
{ 
    Control label = this.Controls["Label"+i]; 
    if (label != null) 
     label.Enabled = true; 
} 

In diesem Beispiel this auf die Form bezieht. Wenn Labels zu einem anderen übergeordneten Steuerelement gehören (z. B. Panel oder GroupBox), sollte anstelle von this

+0

Sie Code sieht vielversprechend.Allerdings, wenn ich Ihren Code ausführen, zeigt es mir einen Fehler "Objektreferenz keine Instanz eines Objekts festgelegt" .Any Ideen ??? –

+0

@gomeshmunda, siehe meine Bearbeitung. Gehören alle Labels zum selben übergeordneten Steuerelement? – ASh

0

Sie Ihre Etiketten in ein setzen können Liste und durchläuft diese Liste:

List<Label> myLabels = new List<Label> { Label1, Label2, /*...*/ Label14}; 
foreach(Label lbl in myLabels) lbl.Enabled = true; 

Wenn dies die einzigen lables in Ihrem Form Sie auch so etwas wie das tun können:

foreach(Label lbl in this.Controls.OfType<Label>()) 
    lbl.Enabled = true; 

Diese wird für alle (oberste Ebene) Kontrolle in Ihrem Form und nimmt alle Label vom Typ Enabled zu true einzustellen.

0

Sie könnten sie in eine Enumerable stecken und dann eine foreach verwenden, um durch sie zu iterieren.

List<Label> lblList = new List<Label> { Label1, Label2, Label3, Label4 }; 

foreach (Label label in lblList) 
{ 
    label.Enabled = true; 
} 

Für eine sauberere Lösung könnten Sie die folgende Syntax verwenden.

lblList.ForEach(x => x.Enabled = true);