我使用VS2008 C#+ Windows Forms。我无法理解为什么comboBox的行为方式不应该如此。 在设计模式下,我在表单中添加了一个comboBox,并编辑了项目以添加“A”和“B”。双击将我带到SelectedIndexChanged事件,我编辑该事件以使用MessageBox显示所选文本。
private void comboBoxImageSet_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show(comboBoxImageSet.SelectedText);
}
当我运行并在comboBox中选择“A”或“B”时,会出现MessageBox,但没有写入任何内容。 为什么呢?
感谢。
答案 0 :(得分:3)
这里是ComboBox
控件的选择属性之间的差异。
SelectedIndex
属性:
获取或设置指定当前所选项的索引。
只需指示选择列表中所选项目的索引即可。 (仅提供您的信息的信息。=))
SelectedItem
属性:
获取或设置
ComboBox
中当前选定的项目。
SelectedItem 表示当前根据ListControl
的{{1}}选择的元素。 这就是您想要使用的原因,以回答您的问题。
ComboBox
属性:
获取或设置在
SelectedText
的可编辑部分中选择的文本。
也就是说,当您编辑ComboBox
的{{1}}部分时,输入编辑时可能选择的文本或任何其他类型的文本选择。这确实包括通过TextBox
的{{1}}部分做出的任何选择。例如,如果您的ComboBox.DropDownStyle
属性设置为ComboBoxStyle.DropDownList
,那么您将永远无法在ComboBox
的可编辑部分中选择任何文字。尽管如此,您还是可以在其列表中选择其他项目。 这就是为什么它不适合用于您的目的。
ListControl
属性:
获取或设置
ComboBox
属性指定的成员属性的值。
仅在使用DataBinding时与ComboBox
属性一起使用。例如,当您想显示客户名称并按其数据库ID选择他时,SelectedValue
应显示客户名称,ValueMember
ID。这样,当您选择一个客户时,DisplayMember
会更改并引发从DisplayMember
继承的ValueMember
事件。 (仅提供您的信息的信息。=))
答案 1 :(得分:2)
SelectedText属性返回组合框中标记的文本,而不是选定的项目。如果组合框是可编辑的,您可以标记文本的一部分,SelectedText属性将返回标记的文本。 Look here
您感兴趣的是SelectedItem属性或SelectedValue属性。
答案 2 :(得分:1)
ComboBox.SelectedText
表示当前的字符串 组合框中的选定文本。如果 DropDownStyle设置为 DropDownList , 返回值是一个空字符串 ( “”)。
使用SelectedItem而不是SelectedText
答案 3 :(得分:0)