C# Windows窗体C设计器文件中的“enum”类型中断
我想知道以前是否有人遇到过这个问题。我正在使用C、.NET4.5和VisualStudio2013 我有一个自定义文本框,它基本上是从标准Windows窗体文本框继承而来的。在其上,有一个类似以下的属性:C# Windows窗体C设计器文件中的“enum”类型中断,c#,winforms,visual-studio,enums,visual-studio-designer,C#,Winforms,Visual Studio,Enums,Visual Studio Designer,我想知道以前是否有人遇到过这个问题。我正在使用C、.NET4.5和VisualStudio2013 我有一个自定义文本框,它基本上是从标准Windows窗体文本框继承而来的。在其上,有一个类似以下的属性: public EnumName Property { get; set; } EnumName枚举的定义如下: [Flags] public enum EnumName { Value1 = 1, Value2 = 2, Value3 = 3
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
如果flags属性存在原因,请保留它并添加如上所述的值。如果没有,请删除该属性。使用[Flags]属性,可以说此枚举是位标志的集合。这就是为什么3实际上是1 | 2
01 = 1
10 = 2
11 = 3
3是一和二
您通常会为此枚举的独占成员添加值:
1 0001
2 0010
4 0100
8 1000
值9999将是以下标志集10011100001111
如果flags属性存在原因,请保留它并添加如上所述的值。如果没有,请删除该属性。如果要保留1,2,3概念,可以使用位移位作为设置值的一部分。1如果希望保留1,2,3概念,可以使用位移位作为设置值的一部分。1.