1. はじめに
- C#でEnumにFlag属性を追加して複数選択を判別したい
- 1つのEnum値で2進数のビット情報で複数の選択状態を管理してみたい
2. 開発環境
- C#
- .Net 6
- Visual Studio 2022
- Windows 11
3. Enumクラス
- EnumクラスにFlag属性を追加する
- Enumの数値は2進数で記載し、ビットの桁位置が被らないようにする
SelectItemEnum.cs
[Flags]
public enum SelectItemEnum
{
// 「0b」から始めると2進数で書ける
AAA = 0b0001,
BBB = 0b0010,
CCC = 0b0100
}
4. 動作確認
Form1.cs
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// int flag = 1; // 0b0001:AAA選択
// int flag = 2; // 0b0010:BBB選択
// int flag = 3; // 0b0011:AAA,BBB選択
// int flag = 4; // 0b0100:CCC選択
// int flag = 5; // 0b0101:AAA,CCC選択
// int flag = 6; // 0b0111:BBB,CCC選択
int flag = 7; // 0b0111:全件選択
// int → Enumへ変換
SelectItemEnum enums = (SelectItemEnum)a;
// 選択状態を確認
foreach (SelectItemEnum value in Enum.GetValues(typeof(SelectItemEnum)))
{
if (enums.HasFlag(value))
{
// 選択した値をコンボボックスへ追加
comboBox1.Items.Add(value);
comboBox1.SelectedIndex = 0;
}
}
}
}
5. 参考文献