'enum'type breaks in Windows Forms C#设计器文件
问题描述:
我想知道是否有人遇到过这个问题。我正在使用C#,.NET 4.5和Visual Studio 2013.'enum'type breaks in Windows Forms C#设计器文件
我有一个自定义文本框,其中一个基本上只是从标准Windows窗体TextBox
继承。就可以了,有喜欢的属性如下:
public EnumName Property { get; set; }
的EnumName
枚举这样定义:
[Flags]
public enum EnumName
{
Value1 = 1,
Value2 = 2,
Value3 = 3
}
当我使用表单上我的自定义控制和属性设置为Value3
,则设计师实际上会这样做:
control.EnumName = EnumName.Value1 | EnumName.Value2;
这很好。但最近,当我添加一个新值EnumName
(例如,Value4 = 9999
),设计人员,而不是这样做:
control.EnumName = EnumName.9999
有谁知道这背后的原因是什么?这非常令人沮丧。
答
使用[Flags]属性,你说这个枚举是位标志的集合。这就是为什么3实际上是1 | 2.
01 = 1
10 = 2
11 = 3
3既是一,二。
您通常会添加值,该枚举的独家成员:
1 0001
2 0010
4 0100
8 1000
9999值将是下列标记设置“10011100001111”
如果没有为标志属性的原因,离开它并添加上面提到的值。如果没有,请删除该属性。
如果您想保留'1,2,3'概念,则可以使用位移作为设置值的一部分。 '1 2014-12-03 14:11:28