现在,为了确保我得到我想要的东西
actionComboBox.Items[actionComboBox.SelectedIndex].ToString()
检索存储为TextBox
其中一个Selected属性是否返回我的上述语句?当我使用它时,我似乎永远无法得到我想要的东西。
赞,actionComboBox.SelectedItem as string
会返回上述值吗?
编辑:
我想这里真正的问题是:每个选定属性返回的内容如何; SelectedItem
,SelectedValue
,SelectedText
。
答案 0 :(得分:2)
我认为如果您能够编辑组合框中的文本,SelectedText
将返回所选文本。如果您选择DropDownList
样式,用户不能只在组合框中键入值,我认为您不会使用此属性。
SelectedValue
仅在绑定到数据源时才适用。 SelectedValue
将返回您选择的数据源中的项目,或者如果您填写了DisplayMember
字段,则会返回您指定的属性/列的值。
SelectedItem
将返回所选项目。
我一直都被这些烧伤,因为我总是忘记。您的示例中的一个重要问题是如何将项目填充到组合框中,这将影响这些属性的返回值。
答案 1 :(得分:1)
ComboBox.Items
是System.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
的集合,所以您可以存储多种类型的对象,但是您负责将其转换回任何可用的类型。从您需要访问它开始。