Windows窗体C#设计器文件中的“枚举”类型中断

问题描述 投票:1回答:1

我想知道以前是否有人遇到过这个问题。我正在使用C#,.NET 4.5和Visual Studio 2013。

我有一个自定义文本框,基本上只是从标准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

有谁知道这背后的原因?这非常令人沮丧。

c# winforms visual-studio enums visual-studio-designer
1个回答
4
投票

使用[Flags]属性,您说这个枚举是一个位标志的集合。这就是为什么3实际上是1 | 2。

01 = 1
10 = 2
11 = 3

3是一和二。

您通常会为此枚举的独占成员添加值:

1   0001
2   0010
4   0100
8   1000

值9999将是以下标志设置“10011100001111”

如果有flags属性的原因,请保留它并添加如上所述的值。如果没有,请删除该属性。

© www.soinside.com 2019 - 2024. All rights reserved.