在设置文件C#中存储枚举位掩码

时间:2012-06-19 06:50:05

标签: c# visual-studio-2010 settings

我有一个应用程序支持几种不同的可查看项目组合。通过单击其对应的树节点,可以切换每个视图。问题是我不想在我的.settings文件中以单独的布尔值存储每个单独的node.checked布尔值。

所以我目前正在尝试使用位掩码,但是我不知道如何将该类型添加到设置文件编辑器的可选类型中。

如何才能使其成为可选择的保存类型?

3 个答案:

答案 0 :(得分:2)

枚举类型是幕后的Int32 - 事实上,枚举类型的变量可以被赋予任何整数值,即使这些值不在原始枚举中。如果在设置中使用了整数类型,则可以将其强制转换为定义的枚举类型以使用它。没有检查整数值是由枚举定义的。

请注意在设置文件中使用位掩码,因为可能难以计算出设置的值。例如,如果您希望将第1位和第3位设置为true,则必须将设置文件中的值设置为“5”,因为这是将第一个和第三个位设置为1的整数。

在代码中,您可以使用bitshift运算符<<来更轻松地读取值,或者在.NET 4及更高版本中使用Enum.HasFlaghttp://msdn.microsoft.com/en-us/library/system.enum.hasflag.aspx)。

答案 1 :(得分:1)

您只能使用Int32类型。位掩码是整数(4字节)或其他指定整数类型的非零位集(例如Int16

答案 2 :(得分:1)

如果您希望自定义类型在winforms设置中可设置,则必须定义TypeConverter以转换为字符串并返回字符串。