2017-01-15 17 views
0

Ich habe 1 Textfeld und 1 datetimepicker. Die Textbox soll zählen, wie viele Tage ich hinzufügen möchte.AddDays von DateTimePicker und Show wieder in DateTimePicker VB.NET

Wenn ich dann aus dem Textfeld verloren gehe, fügt der datetimepicker den neuen Wert hinzu, der plus aus dem Textfeld ist. Diese

ist, wie ich tue, aber ich habe nichts:

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") 

Ich zeige es in msgbox aber das Datum ist nicht mit dem neuen Wert erneuern. Wie könnte das passieren? Was habe ich falsch gemacht?

+0

Betrachten wir ein [NumericUpDown] (https://msdn.microsoft.com/en-us/library/57dy4d56 (v = vs.110 verwenden) aspx) Steuerelement anstelle eines TextBox, um die Anzahl der hinzuzufügenden Tage einzugeben. Dann können Sie einen minimalen und einen maximalen Wert festlegen, und Sie müssen den Wert nicht analysieren, um ihn in eine ganze Zahl zu konvertieren. –

Antwort

4

Ein paar Dinge:

  1. DateTimePicker hat eine Value Eigenschaft, die vom Typ DateTime . Sie verwenden diese Eigenschaft, um einen Wert für die DateTimePicker festzulegen, aber Sie verwenden es nicht erhalten den Wert aus der DateTimePicker.

  2. DateTime ist unveränderlich. Das bedeutet, dass AddDays den Wert der aktuellen Instanz der Struktur DateTime nicht ändert, sondern stattdessen eine neue Instanz DateTime zurückgibt.

Versuchen Sie stattdessen:

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

Schalten Sie dazu zunächst Option Strict:

Dim waktu As Integer = pengerjaan_tb.Text 

Dieser implizit Text konvertiert auf Integer. Option Strict konvertiert potenzielle Laufzeitausnahmen in Compilerfehler.

Es ist nicht erforderlich, den Inhalt einer DateTimePicker zu analysieren, die Werteigenschaft ist ein DateTime Typ. Dann sind DateTime Arten unveränderlich - die AddDays Methode gibt ein neueDateTime mit dem neuen Wert:

Dim datex As DateTime = pengerjaan_dtp.Value 
pengerjaan_dtp.Value = datex.AddDays(5)