2011-07-26 49 views
0

我試圖找到一種使用DayOfWeek.Monday的方法,但通過在表單上選擇它。從組合框中獲取DayOfWeek

因此,如果用戶從下拉組合框中選擇星期二,那麼以編程方式它將是DayOfWeek.Tuesday

這是當前的代碼:

Do Until dtpEndMonth.DayOfWeek = DayOfWeek.Friday 

我想說的是這樣的:

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

任何想法?

回答

1

如果這種靜態的方法是可行的,你可以直接解析字符串到星期幾,枚舉:

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

它說'FindControl'不是form1的成員? –

+0

@Bindind Trevor:編輯我的答案(我在ASP.NET中)。 –

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同時擁有一個Display和一個Value成員(通過DataSource屬性),因此當用戶選擇一個人性化的顯示值時,他們實際上是在封面下選擇了一個「數據值」,這就是您的代碼處理的內容。

注意:我沒有測試此代碼,所以可能會出現拼寫錯誤。如果您需要任何澄清或更正,請告訴我。

+0

我看到你要去哪裏 - 只是有點卡... 它說:「無法綁定到新的顯示成員。參數名稱:newDisplayMember」me.combobox1.valuemember =「Key」。 有什麼想法? –

+0

你可以將你的代碼粘貼到pastebin上並提供一個鏈接嗎?我猜這只是一個錯誤的地方。我會幫你追查的。 – ckittel

+0

謝謝 - 此刻我一直在追蹤另一個項目......但我有一天會回來! –