-1

Sooo,我不断收到错误消息:

“object”不包含“text”的定义,并且找不到接受“object”类型的第一个参数的扩展方法“text”(您是否缺少 using 指令或程序集引用?)

对于下面的代码 - 谁能告诉我为什么?

    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");
    }
4

5 回答 5

3

cboDataSets.SelectedItem 将返回一个对象。如果它确实包含一个具有 .Text 属性的对象,则必须对其进行强制转换

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());
于 2012-07-26T21:33:47.817 回答
1

SelectedItem 只返回一个对象类型的实例。您需要将其转换为实际具有属性“文本”的类型:

((MyType)(cboDataSets.SelectedItem)).text
于 2012-07-26T21:34:40.200 回答
0

错误似乎很明显:cboDataSets.SelectedItem不包含名为 的属性text,但您正在引用该属性。

你从哪里得到这个属性名称的?

SelectedItem将列表项作为对象返回。根据需要键入 cast 以获得所需的数据。

于 2012-07-26T21:34:02.030 回答
0

很可能您的属性是“文本”而不​​是“文本”:)

于 2012-07-26T21:36:17.153 回答
0

尝试使用大“T”,例如“Text”。

于 2012-07-26T21:37:29.483 回答