从ComboBox获取DayOfWeek

时间:2011-07-26 11:58:32

标签: .net vb.net datetime combobox dayofweek

我正试图找到一种使用DayOfWeek.Monday的方法,但要在表单上选择它。

因此,如果用户从下拉组合框中选择星期二,则以编程方式将其DayOfWeek.Tuesday

这是当前的代码:

Do Until dtpEndMonth.DayOfWeek = DayOfWeek.Friday

我想说的是:

Do Until dtpEndMonth.DayOfWeek = DayOfweek.Me.Controls("ComboBox1").Value

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果这种静态方法可行,您可以直接将字符串解析为DayOfWeek-Enum:

Dim dayOfWeekValue = ComboBox1.SelectedValue
Dim dayOfWeek = DirectCast(System.Enum.Parse(GetType(DayOfWeek), dayOfWeekValue), DayOfWeek)

答案 1 :(得分:0)

执行此操作的一种方法是执行以下操作:

' On Form_Load()
Dim daysOfWeek = {New KeyValuePair(Of DayOfWeek, String)(DayOfWeek.Sunday, "Sunday"),
                  New KeyValuePair(Of DayOfWeek, String)(DayOfWeek.Monday, "Monday"),
                  ...,
                  New KeyValuePair(Of DayOfWeek, String)(DayOfWeek.Saturday, "Satruday")}

Me.ComboBox1.DataSource = daysOfWeek
Me.ComboBox1.ValueMember = "Key"
Me.ComboBox1.DisplayMember = "Value"
...

然后,当您想要获得所选值时:

Dim selectedDayOfWeek = CType(Me.ComboBox1.SelectedValue, DayOfWeek)

这种方法利用了ComboBox同时具有显示和值成员(通过DataSource属性)的能力,因此当用户选择人性化的显示值时,它们是实际上选择了一个“数据值”,这是你的代码所处理的。

注意:我没有测试此代码,因此可能存在拼写错误。如果您需要任何澄清或更正,请与我们联系。