You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DevExpress TokenEdit设置令牌报错:无法转换EditValue中的‘a’部分

使用DevExpress TokenEdit控件从字符串设置令牌时出错

问题场景

我尝试用以下代码通过字符串给TokenEdit控件设置令牌:

string _MovieGenre = "a,b,c,d,e,f";
tokenEdit1.Properties.EditMode = TokenEditMode.Manual;
tokenEdit1.Properties.PopupFilterMode = TokenEditPopupFilterMode.StartWith;
string[] MovieGenrewords = _MovieGenre.Replace(", ",",").Split(',');
tokenEdit1.Properties.Tokens.Clear();
tokenEdit1.EditValue = string.Join(",", MovieGenrewords);

但运行时出现错误:

'无法将EditValue 'a,b,c,d,e,f'中的'a'部分转换为令牌'

问题原因

在Manual编辑模式下,TokenEdit要求所有要设置的令牌必须先存在于Properties.Tokens集合中。你先清空了Tokens集合,然后直接给EditValue赋值,控件找不到对应的令牌定义,因此报错。

解决方法

在设置EditValue之前,需要把拆分出来的每个字符串先添加到Tokens集合里:

string _MovieGenre = "a,b,c,d,e,f";
tokenEdit1.Properties.EditMode = TokenEditMode.Manual;
tokenEdit1.Properties.PopupFilterMode = TokenEditPopupFilterMode.StartWith;
string[] MovieGenrewords = _MovieGenre.Replace(", ",",").Split(',');

tokenEdit1.Properties.Tokens.Clear();
// 先将所有令牌添加到集合中
foreach (var genre in MovieGenrewords)
{
    tokenEdit1.Properties.Tokens.Add(new TokenEditToken(genre, genre));
}
// 再设置EditValue
tokenEdit1.EditValue = string.Join(",", MovieGenrewords);

另外,如果不需要严格的Manual模式,也可以将EditMode改为TokenEditMode.Default,这种模式下控件会自动根据EditValue创建令牌,无需手动维护Tokens集合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:10:39