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

本文关键字:枚举 中断 类型 文件 窗体 Windows | 更新日期: 2023-09-27 18:32:48

我想知道以前是否有人遇到过这个问题。我使用的是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

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

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

使用 [Flags] 属性,你说这个枚举是位标志的集合。这就是为什么 3 实际上是 1 |阿拉伯数字。

01 = 1
10 = 2
11 = 3

3 既是 1,也是 2。

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

1   0001
2   0010
4   0100
8   1000

值 9999 将是以下标志设置为"10011100001111"

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