C# 每个组合框的作用是什么。选定。。。返回?

C# 每个组合框的作用是什么。选定。。。返回?,c#,.net,string,combobox,C#,.net,String,Combobox,现在,为了确保我得到了我想要的,我正在使用的 actionComboBox.Items[actionComboBox.SelectedIndex].ToString() 检索作为项目存储在my文本框中的字符串 所选属性之一是否返回我的上述语句?当我使用这些东西时,我似乎永远也得不到我想要的东西 例如,actionComboBox.selecteditemas string是否返回上述值 编辑: 我想这里真正的问题是:每个选定的属性返回什么,例如SelectedItem,SelectedValu

现在,为了确保我得到了我想要的,我正在使用的

actionComboBox.Items[actionComboBox.SelectedIndex].ToString()
检索作为项目存储在my
文本框中的字符串

所选属性之一是否返回我的上述语句?当我使用这些东西时,我似乎永远也得不到我想要的东西

例如,
actionComboBox.selecteditemas string
是否返回上述值

编辑:


我想这里真正的问题是:每个选定的属性返回什么,例如
SelectedItem
SelectedValue
SelectedText
ComboBox.Items
System.Object
的集合,因此它可以是任何内容。默认情况下,
组合框
显示对象的
ToString
方法的返回值。您添加到组合框中的任何内容都将返回,尽管它是作为
System.Object返回的,您必须将其转换回原始类型才能访问其成员

comboBox.Items.Add("foo");
上面将在组合框中添加一个
System.String

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

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

comboBox.Items.Add(foo);
上面将向组合框添加一个
Foo
。为了找回你的价值观

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
}

组合框
的功能在于,由于它存储了
系统对象
的集合,因此可以存储多种类型的对象,但是,当您需要访问它时,您负责将它转换回任何可用的类型。

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

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

SelectedItem
如果您刚刚通过设计器填写了列表项,则将返回所选项


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

@MilkyWayJoe:如果您阅读上述内容,我似乎总是遇到问题,它们会破坏我的代码,因此,在我当前的项目中,我没有尝试更改任何项目。如何将项目加载到组合框中?这会影响这些属性的返回值。但是,SelectedValue、SelectedItem、SelectedText之间有什么区别?
SelectedValue
获取数据绑定时使用的值,
SelectedItem
返回
System.Object
,而
SelectedText
在可编辑时返回可选区域中的文本。请阅读Msdn文档