Using a OR'ed Enum in a custom UITypeEditor

前端 未结 2 1294
有刺的猬
有刺的猬 2021-01-28 07:52

I have a property on a custom control I have written that is an Flag based Enum. I created my own custom control to edit it in a way that makes logical sense and called it from

2条回答
  •  失恋的感觉
    2021-01-28 08:27

    You have to add [Flags] before your enum declaration

    [Flags]
    public enum TrayModes
    { 
        SingleUnit = 0x01
       , Tray = 0x02
       , Poll = 0x04
       , Trigger = 0x08
    };
    

    Consider using HasFlag function to check for setted flags

    TrayModes t=TrayModes.SingleUnit|TrayModes.Poll;
    if(t.HasFlag(TrayModes.SingleUnit))
    //return true
    

    Edit: That's because enum with flags attribute are threated in a different way, as you can see in the example in http://msdn.microsoft.com/en-us/library/system.flagsattribute.aspx A To string of enum with and without Flags attribute show how they are different

    All possible combinations of values of an Enum without FlagsAttribute:

      0 - Black
      1 - Red
      2 - Green
      3 - 3
      4 - Blue
      5 - 5
      6 - 6
      7 - 7
      8 - 8
    

    All possible combinations of values of an Enum with FlagsAttribute:

      0 - Black
      1 - Red
      2 - Green
      3 - Red, Green
      4 - Blue
      5 - Red, Blue
      6 - Green, Blue
      7 - Red, Green, Blue
      8 - 8
    

提交回复
热议问题