2016-08-24 4 views
0

Ich möchte eine Reihe (sechs um genau zu sein) von Windows Forms Etiketten in einem Array speichern. Es gibt sechs Labels, die der Namenskonvention orderLabel0, orderLabel1 ... orderLabel5 folgen.Zugriff Variable über seinen String-Namen C#

Ich mag die Zeiger auf die orderLabels in einem Array speichern:

Label[] orderLabels = new Label[6]; 
for(int index = 0; index < 6; index++) 
{     
    orderLabels[index] = orderLabel + [index]; //Error! 
} 

Der Code irgendwie die Zeichenfolge als Variablennamen behandeln muss und sich als „Etikett“ und nicht als String in der orderLabels Array . Mit anderen Worten, wenn auf orderLabels[0] zugegriffen wird, greife ich tatsächlich auf orderLabel0.

Forschung hier und da haben mich zu dynamic, Reflection und Dictionary Optionen geführt. Sie erfordern jedoch alle die Angabe der Objektnamen (korrigieren Sie mich, wenn ich falsch liege), und ich versuche, die Regel "Do not Repeat" selbst zu befolgen, indem ich das Objekt nicht sechsmal angeben muss.

Bitte beraten, danke.

+0

eine hashmap schaffen ... ich finde es, dass es sehr komisch, wenn ich die meisten dieser Fragen google genau krank einen Stapelüberlauf erhalten Frage mit der Antwort. http://StackOverflow.com/Questions/1293549/String-to-Variable-Name – Mozzie

+0

untergeordnete Steuerelemente sind bereits im übergeordneten Container Steuerelemente Eigenschaft gespeichert – Sehnsucht

+0

Besteht "orderLabel0" zu "orderLabel5" bereits auf Ihrem Formular? – Seany84

Antwort

2

Sie können das Controls Form Variable, die die Steuerung von Namen nachzusehen:

Label[] orderLabels = new Label[6]; 
for(int index = 0; index < 6; index++) 
{     
    orderLabels[index] = Controls[string.Format("orderLabel{0}", index)] as Label; 
} 
Verwandte Themen