列挙型をユーザに選択させたいが、リストボックスやコンボボックスなどへの登録が面倒であるということがあると思います。
それを半自動的にやってくれるサンプルを示したいと思います。
Enum型の静的メソッド、GetValues()を利用します。
選択されたものを元の列挙型の型に戻すのは、Parse()メソッドを利用します。
C#
public partial class Form1 : Form
{
//サンプルの列挙型
private enum DayOfWeek { Sun, Mon, Tue, Wen, Thu, Fri, Sat };
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//コンボボックスに列挙型の文字列を入れておく
foreach (DayOfWeek a in Enum.GetValues(typeof(DayOfWeek)))
{
this.comboBox1.Items.Add(a.ToString());
}
}
private void button1_Click(object sender, EventArgs e)
{
//選択された文字列を列挙型に戻す
DayOfWeek d = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), this.comboBox1.SelectedItem.ToString());
MessageBox.Show(d.ToString());
}
}
VB.NET
Public Class Form1
'サンプルの列挙型
Private Enum DayOfWeek
Sun = 0
Mon = 1
Tue = 2
Wen = 3
Thu = 4
Fri = 5
Sat = 6
End Enum
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'コンボボックスに列挙型の文字列を入れておく
For Each a As DayOfWeek In [Enum].GetValues(GetType(DayOfWeek))
Me.ComboBox1.Items.Add(a.ToString())
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'選択された文字列を列挙型に戻す
Dim d As DayOfWeek = CType([Enum].Parse(GetType(DayOfWeek), Me.ComboBox1.SelectedItem.ToString()), DayOfWeek)
MessageBox.Show(d.ToString())
End Sub
End Class
