2016-05-31 7 views
1

次のように私は、メンバ変数を宣言している:C#が「暗黙のうちに 『string』を変換できません 『System.Windows.Forms.Label』

​​

を、私は値を初期化しようとすると、

dice[i] = dieName; 

私はdieNameが文字列であることを理解しますがdice:私のフォーム上のラベルとdice以内に私はエラーがこの行に「暗黙のうちに 『System.Windows.Forms.Label』から 『string』を変換できません」を取得します配列は私にそれを提供することを望んでいる私の形式で実際のラベルの私。私のフォームでは、die1、die2、...、die5という5つのラベルがあります。

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

が、私はのためのようなクリーンな方法を使用したい:私はちょうどこれを行うことができます知っている

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

:ここ

は私がdice配列を初期化しています機能です - 上のループ。

+0

これはできません。 – SLaks

+0

それはあまり役に立ちません。あなたはそれを正確に行うことはできません。あなたは、DataRepeaterコントロールを使用する場合、いくつかの運があるかもしれません。 –

答えて

0

このお試しください:

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

またはそれらはエラーメッセージから

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

を初期化されていない場合、あなたがの変数に文字列型の値(dieName)を割り当てていることは明らかであるがLabelと入力してください。このようなエラーが発生しました。私はあなたがラベルコントロールの.Textプロパティを使用する必要がある場合は、ラベルテキストの値を設定しようとしていると思います。ラベルの名前を付ける場合は、.Nameプロパティを使用する必要があります。次に、スニペットを調べてターゲットを達成することができます。

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

温かい歓迎; downvoteを感謝し、理由を教えてください –

+0

私のフォームで私はすでにdie1、die2、などのラベルを作成し、名前を付けている。だからダイス[i]をしたいのですが、ダイスは[i]そのラベルを具体的に参照していますか? – KayBay

+0

いいえ、新しいインスタンスになります。あなたは何をしたいですか? –

関連する問題