2016-05-31 25 views
1

我有一個成員變量聲明如下:C#正在初始化標籤的數組「無法隱式‘串’轉換爲‘System.Windows.Forms.Label’

​​

,當我嘗試初始化值內dice我的表上的標籤,我得到錯誤「無法隱式轉換‘字符串’到‘System.Windows.Forms.Label’」在這一行:

dice[i] = dieName; 

我明白dieName是一個字符串,但dice陣列希望我提供它與吶我的形式中的一個實際標籤。在我的表格中,我有五個名爲die1,die2,...,die5的標籤。

這裏就是我初始化dice陣列功能:

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

我知道我可能只是這樣做:

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

,但我想用一個更清潔的方法,如用於上面的回覆。

+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等標籤。所以會做骰子[我]。名稱讓骰子[我]特指該標籤? – KayBay

+0

不,它會成爲一個新的實例;你想做什麼? –

相關問題