具有按位枚举([标志])的 WinForm TokenEdit 控件

WinForm TokenEdit control with bitwise Enum ([Flags])

如何使用 DevExpress TokenEdit 带按位枚举的控件?

(我找不到任何关于这个案例的全面的简短文档。有点here and some there。)

让我们定义枚举

[Flags]
public enum BeverageInfoEnum
{
    Water       = 1 << 0,
    HasAlcool   = 1 << 1,
    Wine        = 1 << 2, 
    Soda        = 1 << 3, 
    Warm        = 1 << 4
}

[Flags] 属性在这里是必需的。值可以混合。

DevExpress TokenEdit 有一个新功能(从 14.2.4 开始)它可以自动处理按位枚举。比方说,在你的 Control/Form 中你有一个 DevExpress.XtraEditors.TokenEdit tokenEditInfo,你可以简单地:

// can be set in designer mode
this.tokenEditInfo.Properties.EditValueType = DevExpress.XtraEditors.TokenEditValueType.Enum; 

// this is were the magic happens
this.tokenEditInfo.Properties.Tokens.AddEnum(typeof(BeverageInfoEnum), true, true);

然后,您可以从中获取值(或者只是在 EditValue 上使用 DataBinding):

var b = (BeverageInfoEnum)this.tokenEditInfo.EditValue

您将汇总 b 中的所有按位值。如你所料。设置值时相同:

var b = BeverageInfoEnum.Water | BeverageInfoEnum.Warm;
(BeverageInfoEnum)this.tokenEditInfo.EditValue = b;

TokenEdit控件会将按位值一分为二并显示两个分开的标记。