【问题标题】:Set ComboBox text from Items only仅从 Items 设置 ComboBox 文本
【发布时间】:2013-12-21 07:05:10
【问题描述】:

我正在尝试有条件地设置 ComboBox 的文本 - 也就是说,如果我设置的文本存在于框的 Items 中,则将其设置为该文本。否则,请将其留空。

例如

组合框的项目:

  • 绿色
  • 蓝色
  • 粉红色
  • 红色

对于 ComboBox1,我尝试设置为“红色”。因为该字符串存在于 Items 中,所以 text 属性设置为“Red”。对于 ComboBox2,我试图设置为“黄色”,它不存在,所以我希望该文本为空(但之前的项目仍然存在)。

所有组合框都将具有相同的项目。但是,有很多组合,所以我试图避免遍历每个盒子拥有的项目并比较每一个。在 C# 中,您可以执行以下操作:

ComboBox1.ItemIndex := 'My Text';

这里没有编译。

【问题讨论】:

    标签: winforms delphi combobox items


    【解决方案1】:

    你可以使用任何一个

    ComboBox1.ItemIndex := ComboBox1.Items.IndexOf('My Text');
    

    ComboBox1.Text := 'My Text';
    

    第二个版本要求您将 ComboBox 的 Style 设置为 csDropDownList(否则即使不在列表中,该字符串也会显示在组合框中)。

    【讨论】:

    • 我也是这么想的,但它不适用于csDropDownList。 WM_SETTEXT 见Default Combo Box Behaviour在下拉列表框中,窗口过程返回 CB_ERR。
    • 嗯,我很确定我已经这样使用它并且它有效......今晚必须检查。也许我使用了一些有效的自定义 CB,但我不这么认为。无论如何,第一个建议应该有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多