none
Zeiten-Eingabe WPF RRS feed

  • Frage

  • Hallo,

    ich möchte die Eingabe einer Länge(Stunden Minuten)  vom Nutzer eingeben lassen, soll ich dies einfach mit 2 Textboxen lösen,oder gibt es eine bessere Lösung?

    LG

    Freitag, 4. September 2015 10:44

Antworten

  • Hallo,

    da du noch in den Anfängen der WPF Entwicklung steckst gehe ich mal näher auf dein Problem ein. Ich möchte zuvor schon mal sagen dass man sich mit dieser Aufgabe eine ganze Weile beschäftigen kann und es einige Wege gibt die zum Ziel führen.

    Ich würde zu einer normalen TextBox greifen und im Codebehind ein TimeSpan aus dem Text parsen:

    TimeSpan ts;
    if(TimeSpan.TryParse(textBoxTimeSpan.Text, out ts)){
        //ts enthäkt nur den Wert der in die TextBox eingegeben wurde
    }
    else{
      //Eingabe enthält einen Fehler
    }

    Peter Sprache bereits einen Konverter an. Sobald du Datenbindungen näher kennen lernst, wirst du auch die Konverter hin- und wieder brauchen. Konverter sind dabei Klassen die IValueConverter oder IMultiValueConverter implementieren.. Die voirgeschriebenen Convert- bzw. ConvertBack Methode sind dabei in der Lage zwischen verschiedenen Typen die Daten umzuwandeln. Also beispielsweise zwischen DateTime und String. Dieser Weg bringt dir aber nur etwas wenn du mit DatenBindungen arbeitest und diese auch richtig verstehst. Ein Beispiel für so einen Konverter findest du unter IValueConverter in WPF data binding.

    Weg Nummer 3 besteht darin ein eigenes Control speziell für diesen Zweck einzusetzen. Zu finden gibt es da diverse im Internet (vgl. Iso7's Antwort), du kannst dir aber auch selbst eines schreiben. Ich muss aber sagen das das recht komplex ist, wenn man es ordentlich machen will und noch keine Routine darin hat.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert R3turnz Sonntag, 6. September 2015 06:52
    Freitag, 4. September 2015 14:08
    Moderator
  • Hallo

    es gibt passende Controls bei codeplex.

    Grüße

    • Als Antwort markiert R3turnz Sonntag, 6. September 2015 06:52
    Freitag, 4. September 2015 11:09

Alle Antworten

  • Hallo

    es gibt passende Controls bei codeplex.

    Grüße

    • Als Antwort markiert R3turnz Sonntag, 6. September 2015 06:52
    Freitag, 4. September 2015 11:09
  • Hi,
    bei passender Bedientechnologie kann auch eine einfache TextBox mit Konverter genutzt werden.

    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks

    Freitag, 4. September 2015 11:16
  • Hallo,

    da du noch in den Anfängen der WPF Entwicklung steckst gehe ich mal näher auf dein Problem ein. Ich möchte zuvor schon mal sagen dass man sich mit dieser Aufgabe eine ganze Weile beschäftigen kann und es einige Wege gibt die zum Ziel führen.

    Ich würde zu einer normalen TextBox greifen und im Codebehind ein TimeSpan aus dem Text parsen:

    TimeSpan ts;
    if(TimeSpan.TryParse(textBoxTimeSpan.Text, out ts)){
        //ts enthäkt nur den Wert der in die TextBox eingegeben wurde
    }
    else{
      //Eingabe enthält einen Fehler
    }

    Peter Sprache bereits einen Konverter an. Sobald du Datenbindungen näher kennen lernst, wirst du auch die Konverter hin- und wieder brauchen. Konverter sind dabei Klassen die IValueConverter oder IMultiValueConverter implementieren.. Die voirgeschriebenen Convert- bzw. ConvertBack Methode sind dabei in der Lage zwischen verschiedenen Typen die Daten umzuwandeln. Also beispielsweise zwischen DateTime und String. Dieser Weg bringt dir aber nur etwas wenn du mit DatenBindungen arbeitest und diese auch richtig verstehst. Ein Beispiel für so einen Konverter findest du unter IValueConverter in WPF data binding.

    Weg Nummer 3 besteht darin ein eigenes Control speziell für diesen Zweck einzusetzen. Zu finden gibt es da diverse im Internet (vgl. Iso7's Antwort), du kannst dir aber auch selbst eines schreiben. Ich muss aber sagen das das recht komplex ist, wenn man es ordentlich machen will und noch keine Routine darin hat.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert R3turnz Sonntag, 6. September 2015 06:52
    Freitag, 4. September 2015 14:08
    Moderator
  • Hallo, ich habe mich nun drangesetzt:

    ich verwende die Convert.to Methode, diese wurde in dem Tu torial welc hes ich verfolgt  habe irgendwann erwähnt.

    Wo liegt der Unterschied zu TryParse.

    LG

    Montag, 7. September 2015 07:59
  • Hallo,

    Convert.To***(..) wirft eine Exception, wenn die Konvertierung fehlgeschlagen wurde. Die TryParse- Methode liefert einen Bool Wert zurück, der gibt an, ob die Konvertierung erfolgreich abgeschlossen wurde.  

    Grüße

    Montag, 7. September 2015 09:34
  • Ok, ich führe es einfach in einem Try aus, und kann es dann ja trotzdem abfangen.

    LG

    Montag, 7. September 2015 10:43