每个ComboBox.Selected ...返回什么?

时间:2012-05-10 17:47:26

标签: c# .net string combobox

现在,为了确保我得到我想要的东西

actionComboBox.Items[actionComboBox.SelectedIndex].ToString()

检索存储为TextBox

项目的字符串

其中一个Selected属性是否返回我的上述语句?当我使用它时,我似乎永远无法得到我想要的东西。

赞,actionComboBox.SelectedItem as string会返回上述值吗?

编辑:

我想这里真正的问题是:每个选定属性返回的内容如何; SelectedItemSelectedValueSelectedText

2 个答案:

答案 0 :(得分:2)

我认为如果您能够编辑组合框中的文本,SelectedText将返回所选文本。如果您选择DropDownList样式,用户不能只在组合框中键入值,我认为您不会使用此属性。

SelectedValue仅在绑定到数据源时才适用。 SelectedValue将返回您选择的数据源中的项目,或者如果您填写了DisplayMember字段,则会返回您指定的属性/列的值。

如果您刚刚通过设计师填写了列表项,

SelectedItem将返回所选项目。

我一直都被这些烧伤,因为我总是忘记。您的示例中的一个重要问题是如何将项目填充到组合框中,这将影响这些属性的返回值。

答案 1 :(得分:1)

ComboBox.ItemsSystem.Object的集合,所以它可以是任何东西。默认情况下,ComboBox显示对象的ToString方法的返回值。无论你添加到ComboBox的是什么,都会得到回报,虽然它会以System.Object的形式返回,你必须将其转换回原来的类型才能访问其成员。

comboBox.Items.Add("foo");

以上内容会为System.String添加ComboBox

class Foo
{
    public String Bar { get; set; }
}

Foo foo = new Foo();
foo.Bar = "Value";

comboBox.Items.Add(foo);

以上内容会为Foo添加ComboBox。所以要重新获得你的价值。

Object obj = comboBox.Items[comboBox.SelectedIndex];
Foo foo = obj as Foo;

if (foo != null) { // check just in case
}

对于字符串,不需要转换,调用ToString就可以了。最好只使用SelectedItem

Foo foo = comboBox.SelectedItem as Foo;
if (foo != null) { // again, check to make sure
}

ComboBox的强大之处在于,因为它存储了System.Object的集合,所以您可以存储多种类型的对象,但是您负责将其转换回任何可用的类型。从您需要访问它开始。