2012-07-26 55 views
-1

的sooo,我不斷收到錯誤:無法在ComboBox.SelectedItem訪問屬性

'object' does not contain a definition for 'text' and no extension method 'text' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)

爲以下代碼 - 誰能告訴我爲什麼?

private void cboDataSets_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     int cats = Int16.Parse(cboDataSets.SelectedItem.text); 
     lblGenerateSelection.Text = ("you have selected " + (20 - cats) + "cats you'd like to adopt"); 
    } 

回答

3

cboDataSets.SelectedItem會返回一個對象。如果它真的包含有一個。文本屬性的對象,你要投它

int name = 
    Int16.Parse(((SomeObectWithATextProperty)cboDataSets.SelectedItem).Text); 

如果是的SelectedItem真是一個字符串,你可以這樣做,而不是:

int name = 
    Int16.Parse(((string)cboDataSets.SelectedItem)); 

如果是的SelectedItem對象已重寫的ToString()來顯示有意義的數據,你可以做到這一點

int name = 
    Int16.Parse(cboDataSets.SelectedItem.ToString()); 
+0

非常感謝你讓埃裏克J – user1556084 2012-07-26 22:02:00

+0

很高興提供幫助。歡迎來到Stack Overflow。請記住接受解決您問題的答案。 – 2012-07-26 22:54:09

0

的錯誤似乎很清楚:cboDataSets.SelectedItem不含有一種叫text屬性,但你正在引用該屬性。

你從哪裏得到該屬性名稱?

SelectedItem返回列表項作爲對象。根據需要輸入cast以獲取所需的數據。

1

SelectedItem只是返回一個object類型的實例。你需要將其轉換爲實際上具有屬性「文本」的類型:

((MyType)(cboDataSets.SelectedItem)).text 
0

最有可能你的屬性爲「文本」,而不是「文本」 :)

0

大「T」試試,像「文本」。