2014-12-02 49 views
1

我想知道是否有人遇到過這個問題。我正在使用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 

有誰知道這背後的原因是什麼?這非常令人沮喪。

回答

4

使用[Flags]屬性,你說這個枚舉是位標誌的集合。這就是爲什麼3實際上是1 | 2.

01 = 1 
10 = 2 
11 = 3 

3既是一,二。

您通常會添加值,該枚舉的獨家成員:

1 0001 
2 0010 
4 0100 
8 1000 

9999值將是下列標記設置「10011100001111」

如果沒有爲標誌屬性的原因,離開它並添加上面提到的值。如果沒有,請刪除該屬性。

+3

如果您想保留'1,2,3'概念,則可以使用位移作爲設置值的一部分。 '1 << 1','1 << 2','1 << 3'等 – 2014-12-03 14:11:28