C# 在C语言中用二进制表示一个数字#
我有四个复选框,用户可以选择任何复选框,我想将选中的复选框存储在一个值中。逻辑应该是这样的C# 在C语言中用二进制表示一个数字#,c#,C#,我有四个复选框,用户可以选择任何复选框,我想将选中的复选框存储在一个值中。逻辑应该是这样的 项目值 复选框1 复选框2 复选框3 4 复选框4 8 如果用户选择Checkbox1和Checkbox2,则应将其存储3如果选择Checkbox1、Checkbox2和Checkbox3,则应将其存储7。它会储存一些价值。现在我想从存储的值中导出选中的复选框,这意味着如果值为7,则选中复选框1、复选框2和复选框3 我怎样才能做到这一点?如果有任何选项可以帮助我。要确定应选中哪些复选框,请使用: 将枚举与
项目值
复选框1
复选框2
复选框3 4
复选框4 8
如果用户选择Checkbox1和Checkbox2,则应将其存储3如果选择Checkbox1、Checkbox2和Checkbox3,则应将其存储7。它会储存一些价值。现在我想从存储的值中导出选中的复选框,这意味着如果值为7,则选中复选框1、复选框2和复选框3
我怎样才能做到这一点?如果有任何选项可以帮助我。要确定应选中哪些复选框,请使用:
将
枚举
与属性一起使用:
[Flags]
public enum CheckBoxEnum
{
Value1 = 1,
Value2 = 2,
Value3 = 4,
Value4 = 8,
}
然后可以使用位操作检查结果:
var res = CheckBoxEnum.Value1 | CheckBoxEnum.Value2;
var res2 = CheckBoxEnum.Value1 & CheckBoxEnum.Value2;
UPD:
@Glorfindel的答案更优雅,但您应该使用按位或而不是AND
Checkbox1.Checked = value | 1;
Checkbox2.Checked = value | 2;
Checkbox3.Checked = value | 4;
Checkbox4.Checked = value | 8;
您正在查找,应用于Enum
[Flags]
public enum CheckboxesSelected
{
Checkbox1 = 1,
Checkbox2 = 2,
Checkbox3 = 4,
Checkbox4 = 8
}
然后:
如果选中复选框控件,则可以执行以下操作:
CheckboxesSelected result = CheckboxesSelected.Checkbox1 | CheckboxesSelected.Checkbox2; //result will be 3
当存储值时,它应该是或运算符,它应该是
或,但我假设OP已经成功地完成了这项工作。(可能使用+
而不是|
)谢谢,@Glorfindel它真的很有用!
CheckboxesSelected result = CheckboxesSelected.Checkbox1 | CheckboxesSelected.Checkbox2; //result will be 3