Вместо этого используйте перечисление flags:
[Flags]
public enum MyButtons
{
None = 0
Button1 = 1,
Button2 = 2,
Button3 = 4,
Button4 = 8,
Button5 = 16,
Button6 = 32
}
Тогда любая комбинация кнопок также является уникальным значением - например, Кнопка 1 и Кнопка 3 == 5
При установке значения используйте двоичный оператор 'или' (|):
MyButtons SelectedButtons = MyButtons.Button1 | MyButtons.Button3
Чтобы узнать, выбрана ли кнопка, используйте двоичные операторы 'и' (&):
if (SelectedButtons & MyButtons.Button1 == MyButtons.Button1)...
Причина, по которой это работает, становится очевидной, когда вы думаете о двоичных представлениях чисел:
MyButtons.Button1 = 000001
MyButtons.Button3 = 000100
Когда вы 'или' их вместе, вы получаете
SelectedButtons = 000001 | 000100 = 000101
Когда вы «и» это с MyButtons.Button1 - вы вернетесь к MyButtons.Button1:
IsButton1Selected = 000101 & 000001 = 000001