You need to enable JavaScript to run this app. 如何获取UltraComboEditor的ValueList列表项的索引?
优惠活动
大模型
产品
解决方案
定价
更多

如何获取UltraComboEditor的ValueList列表项的索引?

解决方案

问题根因

你调用UltraComboEditor.Items.Add时传入的参数顺序为**(数据值, 显示文本)**,添加的枚举DisplayName存放在条目的显示文本字段。而你调用的ValueList.FindString方法默认匹配的是条目的数据值而非显示文本,因此无法匹配到对应条目,返回无效索引导致选中失败。

可用解决方法

方法1:使用专门匹配显示文本的查找方法(最符合你当前的写法)

UltraComboEditor的Items集合自带FindStringByDisplayText方法,专门用于匹配显示文本字段:

ddlType.SelectedIndex = ddlType.Items.FindStringByDisplayText(SalesPaymentType.CashPayment.DisplayName)

方法2:通过数据值匹配(稳定性最高)

直接给控件的Value属性赋值为枚举的Value值,控件会自动定位到对应条目,不需要手动查找索引:

' 无需处理SelectedIndex,控件自动匹配对应数据值的条目
ddlType.Value = SalesPaymentType.CashPayment.Value

方法3:指定FindString匹配显示文本列

如果一定要使用ValueList.FindString,可以传入第二个参数指定匹配显示文本对应的列索引(显示文本列索引为1,数据值列索引为0):

ddlType.SelectedIndex = ddlType.Items.ValueList.FindString(SalesPaymentType.CashPayment.DisplayName, 1)

注意事项

  • 查找逻辑需要在控件条目全部加载完成后执行,不要在窗体InitializeComponent方法执行完毕前调用,此时条目还未完成初始化会导致查找失败。
  • 如果枚举DisplayName包含空格、特殊符号,建议先做Trim去空处理后再传入查找方法,避免匹配失败。

内容的提问来源于stack exchange,提问作者Randy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 12:45:00