2017-01-15 7 views
0

1つのテキストボックスと1つのdatetimepickerがあります。 テキストボックスは、追加したい日数を数えます。DateTimePickerからの追加日とDateTimePicker VB.NETに再度表示する

次に、テキストボックスからlostfocusを取得すると、datetimepickerはテキストボックスからプラスの新しい値を追加します。

これは私がやっている方法ですが、私は何も得なかっました:

Dim waktu As Integer = pengerjaan_tb.Text 
Dim datex As DateTime = DateTime.ParseExact(
pengerjaan_dtp.Text, "MM/dd/yyyy", CultureInfo.InvariantCulture) 
datex.AddDays(5) 
MsgBox(datex) 
pengerjaan_dtp.Value = datex.ToString("MM/dd/yyyy") 

を私がメッセージボックスにそれを示すが、日付が新しい値で更新されていません。どのようにこれが起こっている可能性がありますか?私は何を間違えたのですか?

+0

は[NumericUpDownを(https://msdn.microsoft.com/en-us/library/57dy4d56(V = vs.110の使用を検討してください)の.aspx )コントロールをTextBoxの代わりに追加する日数を入力します。次に、最小値と最大値を設定できます。値を解析して整数に変換する必要はありません。 –

答えて

4

物事のカップルを:

  1. DateTimePickerは型であるValue性質を持っていDateTime 。このプロパティを使用して値をDateTimePickerに設定していますが、には使用しません。の値はDateTimePickerです。

  2. DateTimeは不変です。つまり、AddDaysは、DateTime構造体の現在のインスタンスの値を変更せず、その代わりにDateTimeという新しいインスタンスを返します。

代わりにこれを試してください。

Dim waktu As Integer = Integer.Parse(pengerjaan_tb.Text) 
pengerjaan_dtp.Value = pengerjaan_dtp.Value.AddDays(waktu) 
3

まず、Option Strictをオンにします

Dim waktu As Integer = pengerjaan_tb.Text 

これは、暗黙的に整数にテキストに変換されます。 Option Strictは、潜在的な実行時例外をコンパイラエラーに変換します。

DateTimePickerの内容を解析する必要はなく、valueプロパティはDateTimeタイプになります。その後、DateTimeタイプは不変です - AddDays方法は、新しい値で新しいDateTime返します

Dim datex As DateTime = pengerjaan_dtp.Value 
pengerjaan_dtp.Value = datex.AddDays(5) 
関連する問題