Also habe ich auf meinem Formular ein Label namens lblDate und eine Schaltfläche. Die Texteigenschaft von lblDate ist auf 'Sun-20-02-2019' festgelegt.

Was ich passieren möchte, ist, wenn der Benutzer auf die Schaltfläche klickt, wird der Text von lblDate um einen Tag erhöht. Wenn der Benutzer beispielsweise auf die Schaltfläche klickt, sobald sich der Text in "Mon-21-02-2019" ändert, ist das zweite Mal, wenn auf die Schaltfläche geklickt wird, "Di-22-02-2019" usw. Ich kann das einfach nicht zum Laufen bringen.

Hier ist der Code, den ich für mein Button-Klick-Ereignis habe:

    Dim currentDate As DateTime = lblDate.Text
    currentDate = Convert.ToDateTime(lblDate.Text)
    lblDate.Text = currentDate.AddDays(+1).ToString("ddd-dd-mm-yyyy")
-1
Braden Putt 19 Jän. 2019 im 15:47

3 Antworten

Beste Antwort

Sie sollten Ihr Datum in einer Variablen speichern und die Werte von dort aus erhöhen. Wie jmcilhinney kommentierte, sind Etiketten zur Anzeige und nicht zur Aufbewahrung gedacht

'Declare dt As a field
Dim dt As DateTime

'under the form's load event
dt = DateTime.Parse("Sun, 17-02-2019")
lblDate.Text = dt.ToString("ddd-dd-MM-yyyy")

'Under your Button click event
dt=dt.AddDays(1)
lblDate.Text = dt.ToString("ddd-dd-MM-yyyy")
1
preciousbetine 20 Jän. 2019 im 02:20

Sie müssen Ihren Beschriftungstext genau analysieren. Convert.ToDateTime kann Ihr Format nicht korrekt interpretieren

Dim currentDate As DateTime
DateTime.TryParseExact(lblDate.Text, "ddd-dd-MM-yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, currentDate)
lblDate.Text = currentDate.AddDays(1).ToString("ddd-dd-MM-yyyy")

Ihre Startdaten sind jedoch falsch . Mon-21-02-2019 ist kein Montag und daher geht der gesamte Parsing-Code im TryParseExact schief. Wenn Sie Ihr Startdatum korrekt auf Mon-18-02-2019 eingestellt haben, funktioniert der obige Code korrekt

Beachten Sie außerdem, dass das Format mm für Minuten gilt und Monate mit dem Format MM analysiert werden.

Wie andere bereits sagen, ist all dieser Ansatz, ein Datum in einem Etikett zu speichern und dann zu erhöhen, wahrscheinlich der falsche Weg. Wir haben nicht genügend Informationen über die Gründe für Ihren Ansatz, aber wenn Sie ihn ändern können, ist es besser, eine globale datetime-Variable zu haben und diese zu erhöhen, anstatt ein Label zu analysieren. Sie verwenden die Beschriftung nur, um den Variablenwert bei Bedarf im gewünschten Format anzuzeigen.

1
Steve 19 Jän. 2019 im 14:22
'Put whatever initial value here that is appropriate.
Private dateValue As Date = Dwte.Today

Private Sub IncrementDate()
    dateValue = dateValue.AddDays(1)

    lblDate.Text = dateValue.ToString("ddd-dd-MM-yyyy")
End Sub

Wie Sie sehen, muss keine Analyse durchgeführt werden, sodass Sie möglicherweise kein ungültiges Datum verwenden können.

Möglicherweise möchten Sie das Anfangsdatum auch im Label im Load Ereignishandler des Formulars anzeigen.

Beachten Sie auch, dass Sie in Ihrem Originalcode "mm" verwenden, was für Minuten gilt. "MM" ist seit Monaten.

-1
jmcilhinney 19 Jän. 2019 im 14:00