2011-07-26 13 views
0

DayOfWeek.Mondayを使用する方法を見つけようとしていますが、フォーム上でそれを選択しています。ComboBoxからDayOfWeekを取得する

したがって、ユーザーがドロップダウンコンボボックスから火曜日を選択した場合、プログラムではDayOfWeek.Tuesdayになります。

これは、現在のコードです:

Do Until dtpEndMonth.DayOfWeek = DayOfWeek.Friday 

私が何かのように言いたい:

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

任意のアイデアは?

答えて

1

この静的なアプローチが実行可能であるならば、あなたはのDayOfWeek、列挙型に直接文字列を解析できます。これは、このような何かを行うことによってだろう行うに

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

「FindControl」はform1のメンバーではありませんか? –

+0

@Blind 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は表示と値メンバーの両方を持っています(DataSourceプロパティを使用)ので、ユーザーがフレンドリーな表示値を選択すると、実際にコードで扱われている「データ値」が表紙の下に表示されます。

注:私はこのコードをテストしなかったので、タイプミスがある可能性があります。説明や修正が必要な場合は、教えてください。

+0

私はあなたがこれで行くところを見ています - ちょっとちがう... me.combobox1.valuemember = "Key"に「新しいディスプレイメンバーにバインドできません。パラメータ名:newDisplayMember」と表示されます。 ご意見はありますか? –

+0

あなたのコードをpastebinに貼り付けるとリンクを提供できますか?私はそれがちょうどどこかのタイプミスだと思っています。私はそれを追跡するのを手伝ってくれるでしょう。 – ckittel

+0

ありがとうございます - 私は現時点で別のプロジェクトを追跡してきましたが、いつか戻ってきます! –

関連する問題