我有一个这样的枚举:
public enum ChoixAbonnements
{
Dirigeant = 1,
InterlocuteurGestion = 2,
Comptabilite = 4,
InterlocuteurSyndic = 8,
InterlocuteurInformatiqueInterne = 16,
InterlocuteurInformatiqueLocationVacances = 32,
}
我必须对其进行解码并获取这些复选框的值:
protected void CheckboxBinding()
{
var dict = new Dictionary<ChoixAbonnements, CheckBox>()
{
{ ChoixAbonnements.Dirigeant, this.CheckBox_Dirigeant},
{ ChoixAbonnements.InterlocuteurGestion, this.CheckBox_Interlocuteur_Gestion},
{ ChoixAbonnements.Comptabilite, this.CheckBox_Comptabilite},
{ ChoixAbonnements.InterlocuteurSyndic, this.CheckBox_Interlocuteur_Syndic},
{ ChoixAbonnements.InterlocuteurInformatiqueInterne, this.Checkbox_Interlocuteur_Informatique_Interne},
{ ChoixAbonnements.InterlocuteurInformatiqueLocationVacances, this.CheckBox_Interlocuteur_LocationVacances}
};
有人有想法吗?
答案 0 :(得分:2)
你想获得一个掩码,表明已经检查了哪些枚举值?如果是这样,你需要这样的东西:
var mask = default(ChoixAbonnements);
foreach (var e in dict.Keys) {
if (dict[e].Checked == true)
mask |= c;
}
如果你想反过来,即填充掩码中的复选框,请执行以下操作:
var mask = ...;
foreach (var e in dict.Keys) {
dict[e].Checked = ((mask & e) == e);
}
答案 1 :(得分:0)
给定ChoixAbonnements
类型的值(让我们称之为myVal
),您可以像这样测试每个组件:
var isDirigeant = (myVal & ChoixAbonnements.Dirigeant) == ChoixAbonnements.Dirigeant;
所以你可以这样做:
isDirigeantCheckBox.IsChecked = (myVal & ChoixAbonnements.Dirigeant) == ChoixAbonnements.Dirigeant;
答案 2 :(得分:-1)
你有没有尝试过(int)ChoixAbonnements.Dirigeant?