朧の.Netの足跡
問合せ先:support@oborodukiyo.info サイト内検索はこちら
基本 列挙型をコンボボックスなどに登録する方法





列挙型をユーザに選択させたいが、リストボックスやコンボボックスなどへの登録が面倒であるということがあると思います。
それを半自動的にやってくれるサンプルを示したいと思います。
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










良いやや良い普通やや悪い悪い

投稿日時評価コメント