//'UserEntersFlagsEnum' -> [ ] [x] [x] [ ] [x] [ ] (words with checkbox infront of the word) protected Enum UserEntersFlagsEnum(Item item, T target) { Enum originalEnum = GetEnum <Enum>(item, target); EnumFlags flags = new EnumFlags(originalEnum); int index = 0; int zero = -1; for (int i = 0; i < flags.NumValues; ++i) { if (flags.IsZero(i)) { zero = i; break; } } ConsoleKeyInfo key; do { Thread.Sleep(conf.DelayMilliSeconds); RenderList4(flags, index, zero); key = Console.ReadKey(); if (key.Key == ConsoleKey.UpArrow || key.Key == ConsoleKey.PageUp || key.Key == ConsoleKey.LeftArrow) { index = (index == 0) ? flags.NumValues - 1 : index - 1; } else if (key.Key == ConsoleKey.DownArrow || key.Key == ConsoleKey.PageDown || key.Key == ConsoleKey.RightArrow) { index = (index == flags.NumValues - 1) ? 0 : index + 1; } else if (key.Key == ConsoleKey.Enter || key.Key == ConsoleKey.Spacebar) { if (index == zero) { if (flags.HasAnySet(true)) { flags.SetAllFlags(false); } else { flags.SetAllFlags(true); } } else { flags.SetFlag(index, !flags.GetFlag(index)); } } else if (key.Key == ConsoleKey.Escape) { return(flags.Create()); } }while (true); }