除了一个项目,Asp.net用户控制枚举标志属性?

时间:2017-06-10 06:07:59

标签: c# asp.net enums webforms

我有一个带标志的枚举:

[Flags]
public enum Border
{
    Top = 1,
    Bottom = 2,
    Right = 4,
    Left = 8,
    All = 15
}

我有一个属性类型(边框)的用户控件:

MyUserControl.ascx

public Border Borders {get;set;} 

MyWebForm.aspx

在我的网络表单中使用myusercontrol,例如:

<uc1:MyUserControl runat="server" Borders="Top,Bottom,Right"/>

如何设置边框属性除了一个项目之外的所有项目,如下面的文字:

<uc1:MyUserControl runat="server" Borders="All,~Left"/>

1 个答案:

答案 0 :(得分:0)

您必须创建一个新的枚举值,如下所示

[Flags]
public enum Border
{
    Top = 1,
    Bottom = 2,
    Right = 4,
    All_Except_Left = 7,
    Left = 8,
    All = 15
}

标志的概念是它按位运行。每个位代表一个枚举值。要使用值的组合,您必须打开必要的位(我认为这是关闭开关,因此术语&#39;开启&#39;)。所以你的要求用比特术语看起来就像下面的

Top = 0001

Bottom = 0010

Right = 0100

All_Except_Left = 0111

Left = 1000

All = 1111

另请阅读此MSDN article,这有助于您更好地理解它。