有问题的组合框Windows窗体

时间:2010-05-28 18:05:09

标签: c# .net winforms windows-forms-designer

我使用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,但没有写入任何内容。 为什么呢?

感谢。

4 个答案:

答案 0 :(得分:3)

这里是ComboBox控件的选择属性之间的差异。

  1. SelectedIndex;
  2. SelectedItem;
  3. SelectedText;
  4. SelectedValue
  5. 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)

SelectedText

  

获取或设置所选的文本   在ComboBox的可编辑部分。

也就是说,它获取当前标记的文本。

您想使用SelectedItem.ToString()