2016-05-31 6 views
1
‚string‘in‚System.Windows.Forms.Label‘konvertieren

Ich habe eine Membervariable wie folgt deklariert:C# eine Reihe von Etiketten „Initialisierung kann nicht implizit

private Label[] dice = new Label[numberOfDice]; 

und wenn ich versuche, um die Werte zu initialisieren innerhalb dice mit Etiketten auf meiner Form erhalte ich die Fehler in dieser Zeile „Kann nicht implizit‚string‘in‚System.Windows.Forms.Label‘umwandeln“:

dice[i] = dieName; 

ich verstehe, dass dieName ein String ist aber der dice Array will, dass ich es mit dem na besorge Ich habe ein echtes Etikett in meiner Form. In meiner Form habe ich fünf Labels mit den Namen die1, die2, ..., die5. Hier

ist die Funktion, wo ich die dice Array bin Initialisierung:

private void InitializeLabels() 
{ 
    for (int i = 0; i < numberOfDice; i++) 
    { 
     string dieName = String.Format("die{0}", i + 1); 
     dice[i] = dieName; 
    } 
} 

Ich weiß, ich könnte nur dies tun:

dice[0] = die1; 
dice[1] = die2; 
... 
dice[4] = die5; 

aber ich möchte eine sauberere Verfahren wie das verwenden, für -Schleife oben.

+0

Sie können das nicht tun. – SLaks

+0

Nun, das ist nicht sehr hilfreich. Das kannst du nicht genau machen. Sie können etwas Glück haben, wenn Sie ein DataRepeater-Steuerelement verwenden. –

Antwort

0

Try this:

private void InitializeLabels() 
{ 
    for (int i = 0; i < numberOfDice; i++) 
    { 
     string dieName = String.Format("die{0}", i + 1); 
     dice[i].Text = dieName; 
    } 
} 

oder wenn sie nicht initialisiert

private void InitializeLabels() 
{ 
    for (int i = 0; i < numberOfDice; i++) 
    { 
     string dieName = String.Format("die{0}", i + 1); 
     dice[i].Text = new Label{Parent = this, 
           Text = dieName, 
           Size = new Size(50,20), 
           Location = new Point(i * 50, 0)}; 
    } 
} 
1

Von der Fehlermeldung ist es klar, dass Sie einen String-Typ Wert zuweisen (dieName) auf eine Variable Geben Sie Label ein, damit Sie auf einen solchen Fehler stoßen. Ich denke, dass Sie versuchen, den Wert des Beschriftungstexts festzulegen, wenn dies der Fall ist, sollten Sie die .Text -Eigenschaft des Label Control verwenden. Wenn Sie dem Label einen Namen geben möchten, sollten Sie die Eigenschaft .Name verwenden. Jetzt können Sie in das Snippet schauen, um das Ziel zu erreichen.

for (int i = 0; i < numberOfDice; i++) 
{ 
    string dieName = String.Format("die{0}", i + 1); 
    dice[i].Text = dieName; 
    dice[i].Name = dieName; 
} 
+0

herzlich willkommen; schätze den Downvote, und lass mich den Grund bitte wissen –

+0

In meinem Formular habe ich bereits die die1, die2 usw. Labels erstellt und benannt. Also würfelt [i] .Name macht Würfel [i] bezieht sich speziell auf dieses Etikett? – KayBay

+0

nein es wird eine neue Instanz sein; was willst du tun? –

Verwandte Themen